JAR-файл, созданный с помощью Maven, не может найти файл конфигурации - PullRequest
0 голосов
/ 16 ноября 2018

Я создал файл JAR с Maven. Я использую следующий код в единственном классе в файле jar, чтобы попытаться получить доступ к файлу конфигурации.

 InputStream is = Myclass.class.getClassLoader().getResourceAsStream("/config.properties");

Файл config.properties находится в файле jar, расположенном в пути /

Я не вижу сообщений об ошибках. Но когда я пытаюсь получить доступ к значениям в объекте Properties, значения становятся нулевыми.

 Properties prop = new Properties();
 prop.load(is);
 serverUrl=prop.getProperty("serverUrl");

serverUrl равен нулю.

Любые предложения о том, как получить значения в файле конфигурации в файле JAR?

Ответы [ 2 ]

0 голосов
/ 19 ноября 2018

Я столкнулся с той же проблемой, прежде чем понял, что следующий способ подходит только для загрузки файлов в ваш путь к классам.

InputStream is = Myclass.class.getClassLoader().getResourceAsStream("/config.properties");

Для выбора файлов независимо от того, находятся они в пути к классам или нет, я использую Apache FileUtils . Например, я использовал следующее, и это сработало как шарм.

String str = FileUtils.readFileToString(new File(path_to_your_file), "UTF-8");
IOUtils.toInputStream(str, "UTF-8"); // if you need InputStream object

Вы можете взглянуть на другие API, предоставляемые FileUtils , кроме readFileToString

0 голосов
/ 16 ноября 2018

Обычно в maven вы размещаете ресурсы в src / main / resources.

Затем вы можете получить доступ к этим ресурсам с помощью загрузчика классов:

try (InputStream in = Myclass.class.getClassLoader().getResourceAsStream("config.properties") {
    //doSomething
}
...