您好,匿名用户
随意问技术百科期待您的加入

可执行jar怎么读取外部配置文件

0 投票

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

却不行!

用户头像 提问 2013年 11月7日 @ Tristana 上等兵 (285 威望)
分享到:

1个回答

0 投票

现象是无法读取配置文件。原因:

Something.class.getResourceAsStream("/something.properties");

首先java.lang.Class#getResourceAsStream()方法加载文件,其实是委托ClassLoader加载的,而ClassLoader在加载文件时是根据相对路径(相对于当前java进程的根目录)加载。
所以不妨打印一下加载的路径:

URL url = Something.class.getResource("/something.properties");
System.out.println(url);

看看在两次不同执行方式下,这个url还是否一致就知道了。

用户头像 回复 2013年 11月7日 @ Fizz 上等兵 (325 威望)
提一个问题:

相关问题

0 投票
1 回复 44 阅读
0 投票
1 回复 39 阅读
+1 投票
1 回复 381 阅读
用户头像 提问 2012年 12月31日 @ Usopp 上等兵 (128 威望)
0 投票
1 回复 84 阅读

欢迎来到随意问技术百科, 这是一个面向专业开发者的IT问答网站,提供途径助开发者查找IT技术方案,解决程序bug和网站运维难题等。
温馨提示:本网站禁止用户发布与IT技术无关的、粗浅的、毫无意义的或者违法国家法规的等不合理内容,谢谢支持。

欢迎访问随意问技术百科,为了给您提供更好的服务,请及时反馈您的意见。
...