当我将路径配置为如下所示时,Java可以成功识别application.properties文件中的路径:
pathToInputFile=/kcs/data/incoming/ready/
pathToInputFileProcess=/kcs/data/incoming/work/
如果我尝试使用环境变量,Java程序无法识别路径。
(环境变量TOM_DATA
设置为/kcs。)
pathToInputFile=${TOM_DATA}/data/incoming/ready/
pathToInputFileProcess=${TOM_DATA}/data/incoming/work/
我可以在application.properties文件中使用环境变量吗?
发布于 2012-03-16 01:52:58
汤姆·达克林的答案是正确的。Java不会为您处理这个问题。
下面是一些使用正则表达式的代码,这些正则表达式是我用来处理环境变量替换的:
/*
* Returns input string with environment variable references expanded, e.g. $SOME_VAR or ${SOME_VAR}
*/
private String resolveEnvVars(String input)
{
if (null == input)
{
return null;
}
// match ${ENV_VAR_NAME} or $ENV_VAR_NAME
Pattern p = Pattern.compile("\\$\\{(\\w+)\\}|\\$(\\w+)");
Matcher m = p.matcher(input); // get a matcher object
StringBuffer sb = new StringBuffer();
while(m.find()){
String envVarName = null == m.group(1) ? m.group(2) : m.group(1);
String envVarValue = System.getenv(envVarName);
m.appendReplacement(sb, null == envVarValue ? "" : envVarValue);
}
m.appendTail(sb);
return sb.toString();
}
发布于 2018-03-15 22:13:52
Apache Commons项目扩展了对属性文件的处理,使您可以进行插值(特别是,请参阅变量插值部分)。然后,您应该能够使用以下命令获得您想要的内容:
pathToInputFile=${env:TOM_DATA}/data/incoming/ready/
发布于 2010-02-15 12:21:31
或者,在属性文件中使用相对路径,并通过命令行将基目录加载为系统属性。这样,属性文件将保持独立于应用程序的实际部署位置。
https://stackoverflow.com/questions/2263929
复制相似问题