可执行jar怎么读取外部配置文件
现在打了个可执行的jar包,
通过 java -jar something.jar执行,
目前配置文件(如something.properties)放在jar包里了,
现在我想把配置文件放在jar包外面,
这样方便修改!
but how?!
我是通过:
Something.class.getResourceAsStream("/something.properties");
来获取配置文件的输入流的。
另:
在其他类中调用那个jar包里的Main-Class的main方法是可以读取jar包外的配置文件的,
但是执行:
java -jar something.jar
却不行!
二号楼斜对门
10 years, 8 months ago
Answers
现象是无法读取配置文件。原因:
Something.class.getResourceAsStream("/something.properties");
首先java.lang.Class#getResourceAsStream()方法加载文件,其实是委托ClassLoader加载的,而ClassLoader在加载文件时是根据相对路径(相对于当前java进程的根目录)加载。
所以不妨打印一下加载的路径:
URL url = Something.class.getResource("/something.properties"); System.out.println(url);
看看在两次不同执行方式下,这个url还是否一致就知道了。
神经病幽幽子
answered 10 years, 8 months ago