【发布时间】:2013-07-08 04:48:24
【问题描述】:
我有一个小应用程序,我测试并打包到 jar 并尝试运行它,但我有错误。
这是我的项目结构:
src
-kie.template
----- ServerMain.java ==> Class with main
-kie.template.util
---- PropUtils.java
---- server.properties
target
-kietemplate.jar
---- lib
在 main 方法中,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 类时,它工作正常。但是我把它打包到 jar 并运行后,它显示错误:
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 文件时,属性文件位于目录中。 jar tf kietemplate.jar
非常感谢任何帮助。
编辑: 我更改了读取属性的逻辑:
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){}
}
它需要jar文件的父目录中的属性文件。
【问题讨论】:
-
Jar 中的
server.properties是什么路径?执行jar -tvf kietemplate.jar并将输出添加为编辑。 -
文件中的一些类名。 channel.s911=mypackge.server.ClientInitializer
标签: java properties path nullpointerexception embedded-resource