У меня есть небольшое приложение, и я тестировал и упаковывал в jar, и я пытаюсь запустить его, но у меня есть ошибка.Не удается загрузить свойства из jar
Вот моя структура проекта:
src
-kie.template
----- ServerMain.java ==> Class with main
-kie.template.util
---- PropUtils.java
---- server.properties
target
-kietemplate.jar
---- lib
В главном методе PropUtils класс читает свойства.
public class PropUtils {
private static final String PROPERTIES = "server.properties";
public static Properties load() {
Properties properties = new Properties();
InputStream is = null;
try {
properties.load(PropUtils.class.getResourceAsStream(PROPERTIES));
} catch (IOException e) {
e.printStackTrace();
} finally {
if (is!=null) try{is.close();}catch(IOException e){}
}
return properties;
}
}
}
Когда я запускаю класс ServerMain напрямую, он работает нормально. Но после того, как я упаковал его в банку и бежать, он показывает сообщение об ошибке:
java -cp lib -jar kietemplate.jar
Caused by: java.lang.NullPointerException
at java.util.Properties$LineReader.readLine(Properties.java:418)
at java.util.Properties.load0(Properties.java:337)
at java.util.Properties.load(Properties.java:325)
at au.org.jeenee.kie.template.util.PropUtils.load(PropUtils.java:26)
Файл свойств находится в каталоге, когда я смотрю в файл банка. jar tf kietemplate.jar
Любая помощь будет оценена очень сильно.
EDIT: Я изменил логику для чтения свойства:
Properties properties = new Properties();
InputStream is = null;
try {
File file = new File("server.properties");
is = new FileInputStream(file);
properties.load(new InputStreamReader(is));
} catch (IOException e) {
e.printStackTrace();
} finally {
if (is!=null) try{is.close();}catch(IOException e){}
}
Это требует файл свойств в родительском каталоге файла банки.
Каков путь 'server.properties' в Jar? Сделайте 'jar -tvf kietemplate.jar' и добавьте вывод как редактирование. –
Некоторые имена классов в файле. channel.s911 = mypackge.server.ClientInitializer – sunghun