通過 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在同一個目錄下,就能成功讀取。

蕪湖不蕪
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還是否一致就知道了。
添加回答
舉報
0/150
提交
取消