为了账号安全,请及时绑定邮箱和手机立即绑定

现在打了个可执行的jar包,该怎么读取外部配置文件?

现在打了个可执行的jar包,该怎么读取外部配置文件?

哔哔one 2023-04-19 14:10:55
通过 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在同一个目录下,就能成功读取。


查看完整回答
反对 回复 2023-04-21
?
芜湖不芜

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还是否一致就知道了。


查看完整回答
反对 回复 2023-04-21
  • 2 回答
  • 0 关注
  • 195 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信