通过 java -jar something.jar执行,目前配置文件(如something.properties)放在jar包里了,现在我想把配置文件放在jar包外面,这样方便修改!but how?!我是通过:Something.class.getResourceAsStream("/something.properties");来获取配置文件的输入流的。另:在其他类中调用那个jar包里的Main-Class的main方法是可以读取jar包外的配置文件的,但是执行:java -jar something.jar却不行!
2 回答
天涯尽头无女友
TA贡献1831条经验 获得超9个赞
其实直接用配置文件的相对路径就可以了。 比如这样载入配置:
Properties properties = new Properties(); File file = new File("something.properties"); FileInputStream fis = new FileInputStream(file); properties.load(fis); fis.close();
然后可以用properties.getProperty(key)
来获取某个属性。 用properties.setProperty(key, value)
来设置属性。
这样只要something.properties和你生成的jar在同一个目录下,就能成功读取。
芜湖不芜
TA贡献1796条经验 获得超7个赞
现象是无法读取配置文件。原因:
Something.class.getResourceAsStream("/something.properties");
首先java.lang.Class#getResourceAsStream()方法加载文件,其实是委托ClassLoader加载的,而ClassLoader在加载文件时是根据相对路径(相对于当前java进程的根目录)加载。
所以不妨打印一下加载的路径:
URL url = Something.class.getResource("/something.properties");System.out.println(url);
看看在两次不同执行方式下,这个url还是否一致就知道了。
添加回答
举报
0/150
提交
取消