从jar中取出配置文件并访问它?

时间:2014-04-04 08:48:06

标签: java

我有两个项目 - foo和bar。 Foo是主要项目,它取决于酒吧项目。 Foo也是保存配置文件(conf.xml)的项目。这些项目被打包成独立的罐子。 Conf.xml包含在foo.jar中,主类访问它:

MyApp.class.getClassLoader().getResource("conf.xml");

要在命令行上运行这些i:

java -cp "*" com.example.MyApp

一切正常。

我的问题是,有时我想在不重建项目的情况下更改conf.xml。所以我想从jar中取出conf.xml,这样我就可以自己编辑了。那么问题是jar中的类不能再找到conf.xml了。这可以在不更改我的类中的代码的情况下修复吗?

2 个答案:

答案 0 :(得分:0)

两个指针:

  1. 您的conf文件所在的目录应位于类路径
  2. 尝试使用MyApp.class.getClassLoader()。getResource(“/ conf.xml”);
  3. 注意“/”这告诉java在类路径的根目录中找到它。我假设文件位于运行程序的目录中。

答案 1 :(得分:0)

您有几种选择。

您可以提取配置文件,进行编辑并将其放回原位:

# extract conf.xml from the jar
jar xf path/to.jar conf.xml

# edit the extracted conf.xml with your favorite editor
# ...

# put conf.xml back
jar uf path/to.jar conf.xml

或者不是把它放回去,你可以保留在目录中而不将其添加回jar,并在jar之前将容器目录添加到classpath:

java -cp .:path/to.jar com.example.MyApp