224 votes

Comment obtenir la valeur d'une variable système en Java ?

Comment puis-je obtenir la valeur de la variable système qui est présente dans le fichier

MyComputer -> Properties -> Advanced -> Environment Variables -> System Variables

en Java ?

Editer

J'ai utilisé System.getenv() méthode.

C'est une valeur d'impression si je donne

System.out.println(System.getenv("JAVA_HOME"));

et il affiche null si j'essaie la même chose pour la variable système que j'ai créée

System.out.println(System.getenv("DBE"));

257voto

Rob Points 31432

Utiliser le System.getenv(String) en lui transmettant le nom de la variable à lire.

59voto

Elijah Points 6464

Pour clarifier, les variables de système sont les mêmes que les variables d'environnement. Les variables d'environnement utilisateur sont définies pour chaque utilisateur et sont différentes chaque fois qu'un utilisateur différent se connecte. Les variables d'environnement du système sont les mêmes quel que soit l'utilisateur qui se connecte.

Pour accéder à la valeur actuelle d'une variable système ou d'une variable utilisateur en Java, voir ci-dessous :

String javaHome = System.getenv("JAVA_HOME");

Pour plus d'informations sur les variables d'environnement, voir page wikipedia .

Assurez-vous également que la variable d'environnement que vous essayez de lire est correctement définie avant d'invoquer Java en faisant un :

echo %MYENVVAR%

Vous devriez voir la valeur de la variable d'environnement. Si ce n'est pas le cas, vous devrez peut-être rouvrir l'interpréteur de commandes (DOS) ou vous déconnecter et vous reconnecter.

33voto

EliuX Points 4416

En fait, la variable peut être définie ou non, donc, dans Java 8 ou supérieur, sa valeur nullable doit être enveloppée dans une variable de type Optional qui offre de très bonnes fonctionnalités. Dans l'exemple suivant, nous allons essayer d'obtenir la variable ENV_VAR1 S'il n'existe pas, nous pouvons lancer une exception personnalisée pour le signaler :

String ENV_VAR1 = Optional.ofNullable(System.getenv("ENV_VAR1")).orElseThrow(
  () -> new CustomException("ENV_VAR1 is not set in the environment"));

31voto

Dilum Ranatunga Points 7677

Quelques détails sont intéressants pour obtenir les propriétés du système ou de l'environnement.

Premièrement, System.getenv(String) a été introduite il y a longtemps, puis dépréciée. La dépréciation (stupide, IHMO) s'est poursuivie jusqu'à JSE 1.4 .

Il a obtenu réintroduit dans le JSE 5 .

Ceux-ci sont définis à l'aide du panneau des variables d'environnement de Windows. Les modifications apportées aux variables peuvent ne pas être prises en compte jusqu'à ce que votre VM actuelle soit arrêtée et que l'instance CMD.exe soit quittée.

Contrairement aux propriétés de l'environnement, Java possède également des propriétés du système Java, accessibles par l'intermédiaire de l'option [System.getProperties()](http://java.sun.com/j2se/1.5.0/docs/api/java/lang/System.html#getProperties()) . Ces variables peuvent être initialisées lors du démarrage de la VM à l'aide d'une série de commandes -D_name_=_value_ les arguments de la ligne de commande. Par exemple, les valeurs des propriétés maxInMemory y pagingDirectory sont définis dans la commande ci-dessous :

C:\\> java.exe -DmaxInMemory=100M -DpagingDirectory=c:\\temp -jar myApp.jar

Ces propriétés peuvent être modifiées au moment de l'exécution, sauf restrictions liées à la politique de sécurité.

6voto

Chris Bunch Points 25857

Google conseille de vérifier [getenv()](http://java.sun.com/j2se/1.5.0/docs/api/java/lang/System.html#getenv()) :

Renvoie une vue non modifiable de l'environnement du système actuel sous la forme d'une chaîne de caractères.

Je ne suis pas sûr de la différence entre les variables de système et les variables d'environnement, donc si vous pouviez clarifier, je pourrais vous aider davantage.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X