1

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

方法一:使用 Apache Commons 配置

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

在上述情况下,我得到了 ConfigurationException。类无法找到给定路径中提到的文件。

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

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

在这种情况下,我得到了 nullPointerException。如果您需要更多详细信息,请告诉我。

jar 内容层次结构

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
4

1 回答 1

1

看起来你可能错误地构建了你的 jar。来自 'src/main/resources' 的文件应该位于 jar 文件的根目录中。如果您的 jar 文件包含 'src/main/resources' 目录,则说明您的构建有问题。

于 2017-04-06T16:14:21.757 回答