可执行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
却不行!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
其实直接用配置文件的相对路径就可以了。
比如这样载入配置:
然后可以用
properties.getProperty(key)
来获取某个属性。用
properties.setProperty(key, value)
来设置属性。这样只要something.properties和你生成的jar在同一个目录下,就能成功读取。
现象是无法读取配置文件。原因:
首先java.lang.Class#getResourceAsStream()方法加载文件,其实是委托ClassLoader加载的,而ClassLoader在加载文件时是根据相对路径(相对于当前java进程的根目录)加载。
所以不妨打印一下加载的路径:
看看在两次不同执行方式下,这个url还是否一致就知道了。
自己做命令行参数不就行了吗?解析main方法的args.