Comment puis-je obtenir la valeur de la variable Système en Java?


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

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

En Java?

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

C'est la valeur d'impression si je donne

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

Et il affiche null valeur si j'essaie la même chose pour la variable système créée par moi

System.out.println(System.getenv("DBE"));
Author: Brian, 2009-02-10

8 answers

Utiliser le System.getenv(String) la méthode, en passant le nom de la variable à lire.

 112
Author: Rob, 2017-08-29 22:50:13

Pour clarifier, les variables système sont les mêmes que les variables d'environnement. Les variables d'environnement utilisateur sont définies par utilisateur et sont différentes chaque fois qu'un utilisateur différent se connecte. Les variables d'environnement à l'échelle du système sont les mêmes, quelle que soit la connexion de l'utilisateur.

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 ce page wikipedia.

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

echo %MYENVVAR%

Vous devriez voir la valeur de la variable d'environnement. Sinon, vous devrez peut-être rouvrir le shell (DOS) ou vous déconnecter et vous reconnecter.

 41
Author: Elijah, 2016-07-05 14:27:06

Il y a quelques détails intéressants lors de l'obtention des propriétés système/environnement.

Tout d'abord, System.getenv(String) a été introduit il y a longtemps, puis obsolète. La dépréciation (bêtement, IHMO) a continué tout le chemin dans JSE 1.4.

Il a obtenu réintroduit dans JSE 5.

Ceux-ci sont définis à l'aide du panneau Variables d'environnement dans Windows. Les modifications apportées aux variables peuvent ne pas être récupérées tant que votre machine virtuelle actuelle n'est pas arrêtée et que le CMD.exe exemple est quitter.

Contrairement aux propriétés de l'environnement, Java a également des propriétés système Java, accessible par System.getProperties(). Ces variables peuvent être initialisées lorsque la machine virtuelle est démarrée à l'aide d'arguments de ligne de commande series -Dname=value. Par exemple, les valeurs des propriétés maxInMemory et pagingDirectory sont définies dans la commande ci-dessous:

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

Ces propriétés peuvent être modifiées lors de l'exécution, sauf restrictions de stratégie de sécurité.

 21
Author: Dilum Ranatunga, 2016-02-24 19:13:25

En fait, la variable peut être définie ou non, donc, En Java 8 ou supérieur, sa valeur nullable doit être enveloppée dans un objet Optional, ce qui permet de très bonnes fonctionnalités. Dans l'exemple suivant, nous allons essayer d'obtenir la variable ENV_VAR1, si elle n'existe pas, nous pouvons lancer une exception personnalisée pour alerter à ce sujet:

String ENV_VAR1 = Optional.ofNullable(System.getenv("ENV_VAR1")).orElseThrow(
  () -> new CustomCheckedException("ENV_VAR1 is not set in the environment"));
 9
Author: EliuX, 2016-10-24 00:35:30

Google dit de vérifier getenv():

Renvoie une vue de carte de chaîne non modifiable de l'environnement système actuel.

Je ne sais pas comment les variables système diffèrent des variables d'environnement, cependant, donc si vous pouviez clarifier, je pourrais aider plus.

 5
Author: Chris Bunch, 2016-10-24 10:29:49

Comme mentionné par sombody ci-dessus, le redémarrage d'eclipse a fonctionné pour moi pour la variable d'environnement définie par l'utilisateur. Après avoir redémarré eclipse ID, System.getenv() récupère ma variable d'environnement.

 2
Author: tejas, 2016-11-21 10:04:57

Avez-vous essayé de redémarrer depuis que vous avez défini la variable d'environnement?

Il semble que Windows conserve sa variable d'environnement dans une sorte de cache, et le redémarrage est une méthode pour l'actualiser. Je ne suis pas sûr, mais il peut y avoir une méthode différente, mais si vous n'allez pas changer votre valeur de variable trop souvent, cela peut être suffisant.

 1
Author: trilobite, 2009-02-10 13:13:08

Du commentaire @ Yasin:

L'option de redémarrage d'eclipse ne fonctionne pas. Il suffit de fermer l'application et de la redémarrer pour résoudre le problème.

 0
Author: Jakobitz, 2018-04-30 19:15:40