繁体   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