Concernant l'application.fichier de propriétés et variable d'environnement
Java reconnaît avec succès le chemin dans mon application.fichier de propriétés, quand j'ai le chemin d'accès configuré comme ci-dessous:
pathToInputFile=/kcs/data/incoming/ready/
pathToInputFileProcess=/kcs/data/incoming/work/
si j'essaie d'utiliser une variable d'environnement, le programme Java ne reconnaît pas le chemin.
(la variable environnementale TOM_DATA
est défini comme /kcs.)
pathToInputFile=${TOM_DATA}/data/incoming/ready/
pathToInputFileProcess=${TOM_DATA}/data/incoming/work/
puis-je utiliser une variable d'environnement à l'intérieur de l'application.fichier de propriétés?
5 réponses
Vous pouvez mettre des variables d'environnement dans votre fichier de propriétés, mais Java ne les reconnaîtra pas automatiquement comme des variables d'environnement et ne les résoudra donc pas.
pour ce faire vous analyser les valeurs et résoudre toutes les variables d'environnement que vous trouvez.
Vous pouvez obtenir des variables d'environnement à partir de Java en utilisant diverses méthodes. Par exemple: Map<String, String> env = System.getenv();
Il y a un tutoriel de base ici: http://java.sun.com/docs/books/tutorial/essential/environment/env.html
j'Espère que c'est de l'aide.
la réponse de Tom Duckering est correcte. Java ne gère pas ça pour toi.
voici quelques codes utilisant des expressions régulières que j'ai écrites pour gérer la substitution de variables d'environnement:
/*
* 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();
}
Qui est à droite. Java ne gère pas la substitution de la valeur des variables d'environnement. De plus, Java pourrait ne pas reconnaître les variables comme $EXT_DIR. En utilisant de telles variables, vous pourriez rencontrer FileNotFoundException. Mais Java reconnaîtra les variables qui sont définies avec - D