web-dev-qa-db-fra.com

Peut-on lire les variables d'environnement de système d'exploitation en Java?

Mon système d'exploitation est Windows7. Je souhaite lire les variables d'environnement dans mon Java application. J'ai effectué une recherche sur Google et la réponse de nombreuses personnes consiste à utiliser la méthode System.getProperty(String name) ou System.getenv(String name). Mais cela ne semble pas fonctionner. Grâce à cette méthode, je peux lire la valeur d'une variable définie dans la JVM.

Si je définis une variable d'environnement nommée "Config", avec la valeur "certaines informations de configuration", comment puis-je obtenir la valeur en Java?

43
William

Vous devez utiliser System.getenv () , par exemple:

import Java.util.Map;

public class EnvMap {
    public static void main (String[] args) {
        Map<String, String> env = System.getenv();
        for (String envName : env.keySet()) {
            System.out.format("%s=%s%n",
                              envName,
                              env.get(envName));
        }
    }
}

Lors de l'exécution à partir d'un IDE, vous pouvez définir une variable d'environnement supplémentaire qui sera transmise à votre application Java. Par exemple, dans IntelliJ IDEA, vous pouvez ajouter des variables d'environnement dans le champ "Variables d'environnement" de la configuration d'exécution .

Notez (comme indiqué dans le commentaire de @vikingsteve) que la machine virtuelle Java, comme tout autre exécutable Windows, les modifications au niveau du système apportées aux variables d'environnement ne sont propagées au processus qu'à son redémarrage.

Pour plus d'informations, consultez la section " Variables d'environnement " du tutoriel Java.

System.getProperty(String name) est destiné à obtenir Java des propriétés système qui ne sont pas des variables d'environnement.

69
Dror Bereznitsky

Au cas où quelqu'un viendrait ici et se demanderait comment obtenir une variable d'environnement spécifique sans parcourir en boucle toutes vos variables système, vous pouvez utiliser getenv(String name) . Il renvoie "la valeur de chaîne de la variable ou la valeur null si la variable n'est pas définie dans l'environnement système".

String myEnv = System.getenv("env_name");
52
enderland