【发布时间】:2017-08-01 18:47:09
【问题描述】:
我们希望将 .properties 文件保留在 jar 之外,以便我们可以更改模块中使用的属性,而不必重新安装模块。
在 Java 8 之前,我们曾经运行一个脚本并以下面的方式包含 .properties 文件并且它可以工作。但是自从我们更新到 Java 8 后,这种在类路径中包含 .properties 文件的方式不起作用,这意味着 java 程序找不到 .properties 文件。
我运行 java 项目的脚本:
/usr/java/latest/bin/java -d64 -Xms1G -Xmx16G -XX:MaxPermSize=128m -XX:-UseGCOverheadLimit -cp "/online/sand/lib/client-api-1.0.0.jar:/online/sand/oap_pub/lib/*:/online/sand/oap/oap_dw/run/client_api/application.properties" team.online.client.api.MasterProcessor | tee -a client_api.log
我们正在使用 Sping 上下文以这种方式获取属性文件:
<util:properties id="app_props"
location="classpath*:/application.properties" />
然后以这种方式使用该 appilcation.properties 文件中的一个属性(在许多不同的文件中):
@Value( "#{app_props[\"SERVICE_PATH_GET_METADATA\"]?:''}" )
private String metadataServicePath;
寻找一种方法将 .properties 文件保留在 jar 和类路径中,以便 Spring 上下文找到该文件。
除了使用它们还有其他方法吗?我们需要将属性文件从 jar 中排除
class.getClassLoader( ).getResourceAsStream( "application.properties" );
提前致谢。
【问题讨论】: