2014-04-04 50 views
1

我有兩個項目 - 富和酒吧。 Foo是主要的項目,它取決於酒吧項目。 Foo也是保存配置文件(conf.xml)的項目。這些項目被打包成獨立的罐子。 conf.xml中包含在foo.jar中和主類訪問它像這樣:從jar中取出配置文件並訪問它?

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

要運行這些我在命令行中鍵入:

java -cp "*" com.example.MyApp 

,一切工作正常。

我的問題是,有時我想更改conf.xml而不重建項目。所以我想從conf中取出conf.xml,這樣我就可以自己編輯它了。問題在於,jar裏面的類無法找到conf.xml。這可以修改而不需要更改我的類中的代碼?

+1

你有看過那裏嗎? http://stackoverflow.com/questions/2232602/java-jar-access-external-configuration-file?rq=1 – Trilarion

回答

0

兩個指針:

  1. 你的conf文件駐留在應該在classpath
  2. 嘗試使用MyApp.class.getClassLoader()的getResource目錄( 「/ conf.xml中」);

注意「/」這表示java將它定位到類路徑的根目錄中。我假定文件駐留在您運行程序的同一目錄中。

+0

另外,你也可以嘗試:MyApp.class.getResourceAsStream – Anshuman

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之前的類路徑:

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