现在打了个可执行的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

却不行!


哔哔one
浏览 196回答 2
2回答

天涯尽头无女友

其实直接用配置文件的相对路径就可以了。 比如这样载入配置:  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在同一个目录下,就能成功读取。

芜湖不芜

现象是无法读取配置文件。原因:Something.class.getResourceAsStream("/something.properties");首先java.lang.Class#getResourceAsStream()方法加载文件,其实是委托ClassLoader加载的,而ClassLoader在加载文件时是根据相对路径(相对于当前java进程的根目录)加载。所以不妨打印一下加载的路径:URL url = Something.class.getResource("/something.properties");System.out.println(url);看看在两次不同执行方式下,这个url还是否一致就知道了。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java