亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

現在打了個可執行的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 關注
  • 258 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號