[英]Overriding a resource contained in a jar file
我正在通過jar文件中的代碼運行工具(虛擬地球儀)。 代碼使用類Config的方法讀取資源(XML文件)以使用以下語法提供一些配置選項:
URL localURL = Config.class.getResource("Config.xml");
我想為我自己的Config.xml文件提供覆蓋jar文件中包含的文件的設置的設置。
我不知道如何做到這一點。 我知道getResource()方法會探索類路徑以查找資源。 所以我想到了:-將具有我自己的設置的文件副本放在特定目錄中-將這個目錄放在類路徑的前面
但無濟於事:getResource()始終始終從jar文件中加載資源。
我肯定錯過了什么 ...
我嘗試從應用程序jar中刪除Config.xml文件。 失敗:應用程序失敗,因為getResource()返回null。 在我看來
Config.class.getResource("Config.xml")
只在包含類Config的jar文件中查找資源,而我認為它正在類路徑中查找。
好的,我知道了。 問題是這樣的:我的Config類確實在一個包中,即vis.globe.Config.java,因此getResource(“ Config.Xxml”)確實在尋找一個名為vis.globe.Config.xml的文件。
因此,使用諸如“ ../config:../jar/appl.jar”之類的類路徑,它將在../config/vis/globe中而不是在../config中查找文件Config.xml。
因此,解決方案是在../config中創建一個子目錄結構,以反映Config.java類的全限定名稱,即
../config/vis/globe/Config.xml
您總是可以期待以編程方式執行某項操作。 因此,例如,您將首先搜索一個名為UserConfig.xml的文件,如果找不到該文件,請回退到將在jar文件中找到的名為Config.xml的文件。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.