【问题标题】:jar file not reading correct properties filejar 文件没有读取正确的属性文件
【发布时间】:2016-08-04 07:58:56
【问题描述】:

我已经设法创建了一个 jar 文件,其中的库打包在一个单独的文件夹中。我希望能够在不同的服务器上部署 jar、文件夹和单独的属性文件,它似乎运行良好。但是无论我对每个属性文件进行什么更改,每个 jar 文件似乎都在读取相同的属性文件。使用外部属性文件创建此 jar 的正确方法是什么?

我的项目是使用 /src/main/resources 下的属性文件和 /src/main/java 下的主类设置的,我按如下方式调用该文件:

fileProp.load(configuration.class.getClassLoader().getResourceAsStream("config.properties"));

任何帮助表示赞赏。

【问题讨论】:

    标签: java spring properties-file


    【解决方案1】:

    您正在从 jar 文件中读取属性文件。将文件作为普通文件读取不是更好吗

    File file = new File('config/config.properties');
    fileProp.load(file);
    ......
    

    【讨论】:

    • 是的,但每次部署 jar 文件的实例时,我都需要更改文件内容。这还能用吗?
    • 是的,唯一的区别是您需要同时部署 jar 和配置文件。您将为每个 jar 和配置组合部署 2 个文件。
    • NP。也许只需将其标记为正确答案,这样其他人就不必筛选多个答案来获得解决方案。
    【解决方案2】:

    你应该把你的属性文件放在与你的类相同的包中这样阅读它

    configuration.class.getClassLoader().getResourceAsStream("config.properties")
    

    或者您可以将属性文件相对于当前目录放置并通过

    ClassLoader.getSystemResourceAsStream("config.properties");
    

    希望对你有帮助

    【讨论】:

    • ClassLoader.getSystemResourceAsStream("config.properties") 所以如果我理解正确,这将允许我将属性文件添加到我部署 jar 的任何位置
    • 我选择了 Jacques 的回答,因为他能够确认我的其他问题。非常感谢您的回复。我也会尝试这个来检查它是否适用于我的情况。
    • 是的,它允许你这样做。只需保持您的属性文件相对于您的 jar 位置即可。
    猜你喜欢
    • 2012-02-05
    • 1970-01-01
    • 2019-04-23
    • 2022-12-30
    • 1970-01-01
    • 1970-01-01
    • 2016-11-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多