【发布时间】:2014-08-26 02:28:33
【问题描述】:
我正在通过 jar 文件中的代码运行一个工具(虚拟地球仪)。代码读取资源(一个 XML 文件)以提供一些配置选项,使用类似这样的语法,在类 Config 的方法中:
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 文件中查找资源,而我认为它是在类路径中查找。
【问题讨论】:
-
最快的方法是打开 jar(例如用 winrar)并替换 Config.xml 文件。
-
不能直接将修改后的文件添加到jar中吗?
-
当然可以。但我真的很想避免它。我真的很想让用户通过提供他们自己的自定义配置设置来自定义他们的执行环境。
-
在使用 getResource() 之前检查配置文件是否存在于您想要的位置并改为加载它
-
您只能通过将您自己的 Config.xml “早期”放在应用程序的类路径中来做到这一点。
标签: java jar getresource