【问题标题】:How to retrieve .properties?如何检索.properties?
【发布时间】:2011-11-14 06:08:06
【问题描述】:

我正在使用 maven 开发桌面 java 应用程序。 我有一个 *.properties 文件,我需要在执行期间检索它(src/resources/application.properties)。 我唯一想到的就是使用:

private Properties applicationProperties;
applicationProperties.load(new BufferedInputStream(new FileInputStream("src/resources/application.properties")));

如果我直接从 IDE 运行我的应用程序,这将起作用。 我想保持输出层次结构清晰,所以我设置 maven 将资源文件夹直接复制到目标文件夹(这是输出应用程序的基础)。这样 application.properties 文件将不会加载(因为我有 target/resources/application.properties 但没有 target/src/resources/application.properties)。

当我从 IDE 调试和直接运行构建的 jar 文件时,管理资源的最佳方法是什么?

【问题讨论】:

    标签: java maven resources


    【解决方案1】:

    不要期望文件位于src 文件夹中 - 它在运行时不存在。属性文件转到/bin。但也不要依赖它。因为FileInputStream 只接受绝对路径。

    当你需要一个类路径相对路径时,使用:

    InputStream is = YourClass.class.getResourceAsStream("/a.properties")`
    

    (maven 将文件从/src/main/resources 发送到类路径的根目录)

    【讨论】:

      【解决方案2】:

      您应该从类路径而不是从显式文件系统位置加载属性文件:

       applicationProperties.load(new BufferedInputStream(this.getClass().getResourceAsStream( "/application.properties" );
      

      只要您的 IDE 配置为在您的类路径中包含资源目录(这应该是 Maven 的默认设置),那么无论您是否在 IDE 中运行,这都可以工作,因为 maven 会将资源复制到打包存档时的正确位置。

      【讨论】:

        猜你喜欢
        • 2015-04-14
        • 2011-05-31
        • 1970-01-01
        • 1970-01-01
        • 2015-07-21
        • 1970-01-01
        • 1970-01-01
        • 2011-04-18
        • 2019-02-18
        相关资源
        最近更新 更多