it-swarm.com.de

Wie kann ich den Wert einer Systemvariablen in Java erhalten?

Wie kann ich den Systemvariablenwert erhalten, der in vorhanden ist?

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

in Java?

Bearbeiten

Ich habe System.getenv() Methode verwendet.

Es ist Druckwert, wenn ich gebe

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

und es zeigt null value an, wenn ich das gleiche für die von mir erstellte Systemvariable versuche

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

Verwenden Sie die Methode System.getenv(String) und übergeben Sie den Namen der zu lesenden Variablen.

158
Rob

Zur Verdeutlichung sind Systemvariablen dieselben wie Umgebungsvariablen. Benutzerumgebungsvariablen werden pro Benutzer festgelegt und sind unterschiedlich, wenn sich ein anderer Benutzer anmeldet. Systemweite Umgebungsvariablen sind unabhängig davon, welcher Benutzer sich anmeldet, identisch.

Informationen zum Zugriff auf den aktuellen Wert einer systemweiten Variablen oder einer Benutzervariablen in Java finden Sie unten:

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

Weitere Informationen zu Umgebungsvariablen finden Sie auf dieser Wikipedia-Seite .

Stellen Sie außerdem sicher, dass die Umgebungsvariable, die Sie lesen möchten, richtig eingestellt ist, bevor Sie Java ausführen:

echo %MYENVVAR%

Sie sollten den Wert der Umgebungsvariablen sehen. Wenn nicht, müssen Sie möglicherweise die Shell (DOS) erneut öffnen oder sich abmelden und wieder anmelden.

51
Elijah

Beim Abrufen von System-/Umgebungseigenschaften sind einige Details von Interesse.

Zuerst wurde System.getenv(String) eingeführt, dann veraltet. Die Abwertung (dummerweise IHMO) ging weiter bis hin zu JSE 1.4 .

Es wurde in JSE 5 wieder eingeführt .

Diese werden im Fenster "Umgebungsvariablen" in Windows festgelegt. Änderungen an den Variablen werden möglicherweise erst übernommen, wenn Ihre aktuelle VM heruntergefahren und die CMD.exe-Instanz beendet wird.

Im Gegensatz zu den Umgebungseigenschaften verfügt Java auch über Java Systemeigenschaften, auf die über System.getProperties() zugegriffen werden kann Variablen können initialisiert werden, wenn VM mit einer Reihe -Dname=value Kommandozeilenargumente. Beispielsweise werden die Werte für die Eigenschaften maxInMemory und pagingDirectory im folgenden Befehl festgelegt:

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

Diese Eigenschaften können zur Laufzeit geändert werden, mit Ausnahme von Sicherheitsrichtlinieneinschränkungen.

24
Dilum Ranatunga

Tatsächlich kann die Variable gesetzt werden oder nicht, daher sollte in Java 8 oder höher ihr nullbarer Wert in ein Optional -Objekt eingeschlossen werden, was wirklich gute Funktionen ermöglicht Beispiel: Wir werden versuchen, die Variable ENV_VAR1 zu erhalten. Wenn sie nicht existiert, können wir eine benutzerdefinierte Ausnahme auslösen, um darauf aufmerksam zu machen:

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

Google sagt zum Auschecken getenv () :

Gibt eine nicht änderbare Zeichenfolgenzuordnungsansicht der aktuellen Systemumgebung zurück.

Ich bin mir jedoch nicht sicher, wie sich Systemvariablen von Umgebungsvariablen unterscheiden. Wenn Sie also klarstellen könnten, könnte ich Ihnen weiterhelfen.

5
Chris Bunch

Wie bereits erwähnt, funktionierte der Neustart von Eclipse für die benutzerdefinierte Umgebungsvariable. Nach dem Neustart von Eclipse IDE ruft System.getenv() meine Umgebungsvariable ab.

3
voidMainReturn

Haben Sie einen Neustart versucht, seit Sie die Umgebungsvariable festgelegt haben?

Es scheint, dass Windows seine Umgebungsvariable in einer Art Cache behält und ein Neustart eine Methode ist, um es zu aktualisieren. Ich bin nicht sicher, aber es kann eine andere Methode geben, aber wenn Sie Ihren Variablenwert nicht zu oft ändern, kann dies gut genug sein.

1
trilobite

Sind Sie auf einem Linux-System? Wenn ja, stellen Sie sicher, dass Sie Ihre Variable exportieren.

myVar=testvalue; export myVar

Ich erhalte null, es sei denn, ich definiere den Wert global mit export.

0
keving