Всем привет!
Есть проект, в котором 3 класса, которые взаимодействуют друг с другом. 4 класс - SendProperties, который позволяет взаимодействовать с файлом config.properties. Вот код:
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
public class SendProperties {
private static Properties properties= new Properties(); ;
public static String getProperty(String propertyKey) {
if(properties.containsKey(propertyKey)) {
return properties.getProperty(propertyKey);
} else {
return null;
}
}
public static void setProperties(String file) throws IOException {
properties.load(new FileInputStream(new File(file)));
}
public static Properties getProperties() {
return properties;
}
}
Основной класс SendJMS. Его конструктор загружает файл:
public SendJMS() {
try {
SendProperties.setProperties("config.properties");
} catch (IOException e) {
e.printStackTrace();
}
}
При запуске получаю FileNotFoundException. Хотя файл точно лежит в проекте в папке resources
Сделано это было для того, чтобы использовать один экземпляр файла пропертей во всех классах, а не создавать в каждом по экземпляру Как можно решить данную проблему? Или есть какие еще способы для того, чтобы использовать config.properties во всех классах?
Заранее спасибо
Если путь не указан для файла File
или FileInputStream
, то подразумевается что он относительный для конечного файла. Папка ресурсов не всегда может быть относительным путём для такого файла. Если эта папка указана на пути классов, как в большинстве проектов, которые собираются с помощью maven или cradle, то наиболее подходящий способ доступа к файлу является использование загрузчика классов. Можно использовать getClass().getClassLoader().getResourceAsStream()
.
Для решения данной проблемы был использован блок static в классе SendProperties
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
public class SendProperties {
private static Properties properties = new Properties(); ;
public static String getProperty(String propertyKey) {
if(properties.containsKey(propertyKey)) {
return properties.getProperty(propertyKey);
} else {
return null;
}
}
static {
try {
properties.load(ClassLoader.class.getResourceAsStream("/config.properties"));
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
public static Properties getProperties() {
return properties;
}
}
Виртуальный выделенный сервер (VDS) становится отличным выбором
Всем приветОпыта с андроидом нет, поэтому получил вот такую проблему, которую никак не могу решить
Приложение с поддержкой spring-mvc Вот как я его подключаю:
Учусь работать с сессиями и мне надо их в базу данных как-то сохранять ( PostgreSQL )Пишу на nodejs с использованием Express