我正在努力使我的Java应用程序易于部署到其他计算机,并正在编写一个ant脚本来做到这一点,这很好。
我在加载jar list 文件中命名的类路径中列出的资源时遇到了麻烦。
文件夹结构如下所示:
/MyProgram.jar
/lib/<dependencies>
/config/configuration.xml
我一生无法使用ClassLoader访问configuration.xml文件。它以及所有依赖项在 list 文件的Class-Path条目中明确列出。
我尝试了以下多种变体:
this.xml = Thread.currentThread().getContextClassLoader()
.getResourceAsStream(xmlName);
this.xml = this.getClass().getResourceAsStream(xmlName);
使用xmlName作为以下所有值的字符串:
"config/configuration.xml"
"configuration.xml"
"config.configuration.xml"
与此相关的是,我在config目录中也有一个log4j.properties文件。如何获取log4j来拾取它?其他引用资料说,它只需要在类路径中,并且在jar的 list 文件中也已明确命名。有人可以指出我正确的方向吗?
更新:
这是来自Class-Path的实际条目:
Class-Path: <snip dependencies> config/configuration.xml config/log4j.properties
最佳答案
类路径条目应该是目录或jar文件,而不是单个文件。尝试将您的类路径更改为指向config目录,而不是指向单个配置文件。
this.xml = Thread.currentThread().getContextClassLoader()
.getResourceAsStream("config.xml");
更好的是将您的配置目录包括在MyProgram.jar中。这样可以避免您需要将其专门添加到类路径中。
this.xml = Thread.currentThread().getContextClassLoader()
.getResourceAsStream("/config/configuration.xml");