web-dev-qa-db-fra.com

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

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

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

en Java?

Éditer

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

C'est une valeur d'impression si je donne

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

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

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

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

158
Rob

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 diffèrent chaque fois qu'un utilisateur différent se connecte. Les variables d'environnement 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 à une variable utilisateur en Java, voir ci-dessous:

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

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

Assurez-vous également que la variable d’environnement que vous essayez de lire est correctement définie avant d’appeler Java) en effectuant une des opérations suivantes:

echo %MYENVVAR%

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

51
Elijah

Il existe quelques détails d’intérêt lors de l’acquisition des propriétés système/environnement.

Tout d'abord, System.getenv(String) a été introduit comme il était, puis déconseillé. La dépréciation (bêtement, IHMO) a continué jusqu’à JSE 1.4 .

Il a eu réintroduit dans JSE 5 .

Celles-ci sont définies à l'aide du panneau Variables d'environnement de Windows. Les modifications apportées aux variables peuvent ne pas être récupérées jusqu'à ce que votre VM) actuel soit arrêté et que l'instance CMD.exe soit fermée.

Contrairement aux propriétés de l’environnement, Java a également Java, accessible via System.getProperties() ). = Les variables peuvent être initialisées lorsque VM est démarré à l'aide d'une série -Dname=value arguments de ligne de commande. 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 monApp.jar 

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

24
Dilum Ranatunga

En fait, la variable peut être définie ou non. Ainsi, dans Java 8 ou supérieur, sa valeur nullable doit être encapsulé dans un objet Optional, ce qui permet de très bonnes fonctionnalités. par exemple on va essayer d'obtenir la variable ENV_VAR1, s'il n'existe pas, nous pouvons lancer une exception personnalisée pour en alerter:

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

Google dit de vérifier getenv () :

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

Cependant, je ne suis pas sûr de savoir en quoi les variables système diffèrent des variables d'environnement, alors si vous pouviez préciser, je pourrais vous aider davantage.

5
Chris Bunch

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 IDE, System.getenv() récupère ma variable d'environnement.

3
voidMainReturn

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 ne modifiez pas trop souvent la valeur de votre variable, cela peut suffire.

1
trilobite

Êtes-vous sur un système Linux? Si c'est le cas, assurez-vous d'exporter votre variable.

myVar=testvalue; export myVar

J'obtiens null sauf si j'utilise export pour définir la valeur globalement.

0
keving