【问题标题】:How to load property file located inside jar file如何加载位于 jar 文件中的属性文件
【发布时间】:2014-06-12 19:54:17
【问题描述】:

如何加载放置在可执行 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

【问题讨论】:

  • 向我们展示您的 jar 内容层次结构。
  • 更新了问题。请检查一下!
  • 您的 jar 文件似乎未正确打包。在当前表单中,您应该将/java-file-io-application/src/main/resources/config.properties 作为getResource()getResourceAsStream() 的路径
  • 我认为您需要使用("resources/config.properties"),因为您的属性文件位于资源文件夹中。你试过吗?
  • @AlexanderPogrebnyak 我仍然收到 NullPointerException。

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


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2011-02-18
    • 1970-01-01
    • 2014-12-30
    • 2014-11-17
    • 1970-01-01
    • 1970-01-01
    • 2018-09-04
    • 2014-10-05
    • 2014-12-16
    相关资源
    最近更新 更多