如何加载位于jar文件中的属性文件

时间:2014-06-12 19:54:17

标签: java properties executable-jar apache-commons-config

如何加载放置在可执行jar文件的资源文件夹中的属性文件。在这里我的应用程序本身就是一个jar,它自己执行。它需要在运行时找到此属性文件(在资源文件夹下放置),具体取决于代码中提到的路径。我使用了以下两种方法,但它没有帮助我。这里指出的是,当我在eclipse中执行时,这两个选项都正常工作,但是当我将它打包到可执行jar中时它不起作用。它抛出NullPointerException。我在这里看到的唯一问题是jar无法选择具有给定路径的属性文件。任何帮助将不胜感激。

方法1:使用Apache Commons配置

 URL propFileURL = XYZ.class.getClassLoader().getResource("/config.properties");
Configuration propertyConfiguration = null;             
propertyConfiguration = new PropertiesConfiguration(propFileURL);

在上面的例子中,我得到了ConfigurationException。类无法找到给定路径中提到的文件。

方法2:使用getResourceAsStream。我知道如果我们要在任何其他位置从网络加载文件,getResource不起作用。

InputStream is =XYZ.class.getClassLoader().getResourceAsStream("/config.properties");
Properties prop = new Properties();
prop.load(is);

在这种情况下,我得到nullPointerException。 如果您需要更多详细信息,请与我们联系。

jar内容Heirarchy

Properties file - /java-file-io-application/src/main/resources/config.properties
XYZ class - /java-file-io-application/src/main/java/org/bc/xyz/iplugin/utilities/XYZ.java

1 个答案:

答案 0 :(得分:1)

看起来您可能错误地构建了jar。来自'src / main / resources'的文件将在jar文件的根目录中出现。如果你的jar文件包含'src / main / resources'目录,那么你的构建就会出现问题。