簡體   English   中英

從Java中的類路徑讀取配置文件,默認為JAR

[英]Read config file from classpath in Java with default in JAR

更新:事實證明,在我進行的某些測試中,IDE中的類路徑設置不正確。 以下代碼段可以正常運行。 這不再是問題。

我試圖在將部署在JAR內的文本文件中設置一些屬性/配置。

我希望用戶能夠提供自己的屬性/配置文件,該文件將覆蓋JAR中使用的一個文件,因此,僅當用戶提供的文件不存在時,才使用JAR中的一個文件。

我正在使用Class.getResource(path),它應該能夠找到相對文件和絕對文件(以斜杠開頭)。

給定JAR中的以下文件層次結構:

<jar-file>/SomeClass.class
<jar-file>/conf/config-file.txt

和一個可選文件位於

<some-classpath-folder>/conf/config-file.txt

我正在嘗試執行以下代碼片段,以便僅當在類路徑的絕對文件夾conf中找不到該文件時,才會從JAR內的相對conf文件夾中加載該文件:

Class clasz = SomeClass.class;
res = clasz.getResource("/conf/config-file.txt");    // absolute file not found, note leading-slash

if (res == null)
    res = clasz.getResource("conf/config-file.txt"); // relative file is found, No leading-slash

找到了相對文件(來自JAR內),但是沒有找到來自類路徑的絕對文件。

調用System.getProperty(“ java.class.path”)將顯示<some-classpath-folder>文件夾,因此看起來類路徑已正確設置,而<some-classpath-folder> / conf / config中的文件找不到-file.txt。

有沒有辦法知道在搜索文件時掃描了哪些文件夾? 或對這里出什么問題有任何建議嗎?

TIA

如果僅依靠類路徑資源,則只能依靠類路徑層次結構,程序的運行方式等。這可能有效,但是並不完全在您的控制范圍之內。

IMO最好檢查明確定義的路徑,例如通過系統屬性-Dconfig=/path/to/config ,已知位置(例如用戶家中的文件)或屬性API。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM