[英]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.