簡體   English   中英

覆蓋jar文件中包含的資源

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

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