将外部属性文件添加到类路径

时间:2015-12-29 18:40:58

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

我的应用程序打包到一个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

我是以错误的方式来做这件事的吗?我应该以另一种方式编辑类路径吗?

3 个答案:

答案 0 :(得分:0)

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

然后它将使用该文件。

答案 1 :(得分:0)

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

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

答案 2 :(得分:-1)

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

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