【问题标题】:Add external properties file to classpath将外部属性文件添加到类路径
【发布时间】:2016-04-03 16:35:12
【问题描述】:

我的应用程序被打包成一个 jar 文件并使用常规的“java -jar ...”命令运行。

我在目录中有一个属性文件“myApp.properties”:/opt/myuser/resources

我想将 /opt/myuser/resources 目录添加到类路径中。我相信这是有利的,因为当属性文件位于类路径上时,我可以在我的源代码中访问属性文件,而无需指定属性文件的完整路径 (/opt/myuser/resources/myApp.properties)。这样,我可以将具有特定环境属性的属性文件与我的应用程序分开。

我尝试使用 Oracle 的指令(http://docs.oracle.com/javase/7/docs/technotes/tools/solaris/classpath.html 在“使用 JDK 工具的 -classpath 选项”下)设置类路径,如下所示:

java -cp .:/opt/myuser/resources -jar myApp.jar

但我收到一个错误,即无法打开属性文件 myApp.properties(在源代码中引用):

Caused by: java.io.FileNotFoundException: class path resource [myApp.properties] cannot be opened because it does not exist

我是不是走错了路?我应该以其他方式编辑类路径吗?

【问题讨论】:

  • "当你使用这个选项 [NDLR:-jar] 时,JAR 文件是所有用户类的来源,其他用户类路径设置被忽略。" (source)

标签: java linux intellij-idea classpath properties-file


【解决方案1】:

希望这对其他人有所帮助。 我已用作 spring boot 的程序参数 --spring.config.location=file:/opt/myuser/resources/myApp.properties

然后它将使用该文件。

【讨论】:

    【解决方案2】:

    在虚拟机选项/环境变量中传递这个参数

    -Dspring.config.location=/deployments/tomcat/instance-conf/myApp.properties
    

    【讨论】:

      【解决方案3】:

      使用 gerResource 解决方案在属性对象上加载文件:

        ClassLoader.getResourceAsStream ("some/pkg/resource.properties");
        Class.getResourceAsStream ("/some/pkg/resource.properties");
        ResourceBundle.getBundle ("some.pkg.resource");
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-04-15
        • 1970-01-01
        • 1970-01-01
        • 2023-02-22
        • 2012-01-29
        • 2012-03-14
        • 2016-07-10
        相关资源
        最近更新 更多