UPDATE:事實證明,在進行某些測試時,我沒有在IDE中正確設置類路徑。下面的代碼片段正常工作。這不再是一個問題。從JAR類路徑中讀取配置文件,並在JAR中默認使用
我想設置一些屬性/配置文件中的文件,將被部署在JAR中。
我希望用戶能夠提供自己的屬性/配置文件,它將覆蓋JAR中使用的屬性/配置文件,因此只有在用戶提供的文件不存在時纔會使用JAR中的文件。
我正在使用Class.getResource(路徑),它應該能夠找到相對和絕對(帶有前導斜槓)文件。
給出的JAR內的以下文件層次:
<jar-file>/SomeClass.class
<jar-file>/conf/config-file.txt
,並在
<some-classpath-folder>/conf/config-file.txt
一個可選的文件我試圖做類似下面的代碼段,所以,只有當該文件是沒有在類路徑的絕對文件夾conf中找到,它將從JAR中的相對conf文件夾加載:
找到相對文件(來自JAR內),但類路徑中的絕對文件不是。
調用System.getProperty(「java.class.path」)顯示<一些-類路徑文件夾>文件夾,所以它看起來像類路徑設置正確,並在<一些-類路徑文件夾然而,這個文件>未找到/conf/config-file.txt。
有沒有辦法知道在搜索文件時掃描了哪些文件夾?或者對這裏出了什麼問題有任何建議?
TIA
我打算給文件的唯一名稱,以便不應該是一個問題國際海事組織。我試圖保持外部配置到最低限度,這將用於Servlet過濾器,所以我想避免user.home等我將更新與更多的細節問題。謝謝。 – isapir
@Igal如果這是在一個Web應用程序中,並且您希望具有用戶可配置選項,而無需修改Web應用程序,則仍應使用外部文件進行其他配置,IMO。或者JNDI /等等。 –
我會研究一下JNDI,但是請看我在這個問題上的更新,在我看來,它應該是一個簡單的解決方案,如果我能夠得到它的工作。謝謝。 – isapir