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
Wert, wenn ich das gleiche für die von mir erstellte Systemvariable versuche
System.out.println(System.getenv("DBE"));
Antworten:
Verwenden Sie die
System.getenv(String)
Methode und übergeben Sie den Namen der zu lesenden Variablen.quelle
Zur Verdeutlichung sind Systemvariablen dieselben wie Umgebungsvariablen. Benutzerumgebungsvariablen werden pro Benutzer festgelegt und unterscheiden sich, wenn sich ein anderer Benutzer anmeldet. Systemweite Umgebungsvariablen sind unabhängig vom Benutzer gleich.
Informationen zum Zugriff auf den aktuellen Wert einer systemweiten Variablen oder einer Benutzervariablen in Java finden Sie unten:
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 aufrufen, indem Sie Folgendes ausführen:
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.
quelle
getenv
sollte in kleinem Fall stattgetEnv
richtig sein?echo %var%
, druckt%var%
. Wenn ich es stattdessen versucheecho $var
, funktioniert es und zeigt den Wert dieser env-Variablen an. Meingetenv
gibt null zurück.%var%
wird für Windows,$var
für Unix- / Linux- / MacOS-Systeme verwendet.Beim Abrufen von System- / Umgebungseigenschaften sind einige Details von Interesse.
Zuerst
System.getenv(String)
wurde vor langer Zeit eingeführt, dann veraltet. Die Abwertung (dummerweise IHMO) setzte sich bis in JSE 1.4 fort .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 Instanz CMD.exe beendet wird.
Im Gegensatz zu den Umgebungseigenschaften verfügt Java auch über Java-Systemeigenschaften, auf die über zugegriffen werden kann
System.getProperties()
. Diese Variablen können beim Starten der VM mithilfe einer Reihe von Befehlszeilenargumenten initialisiert werden . Zum Beispiel die Werte für die Eigenschaften und werden im folgenden Befehl festgelegt:-Dname=value
maxInMemory
pagingDirectory
Diese Eigenschaften können zur Laufzeit geändert werden, sofern keine Sicherheitsrichtlinien gelten.
quelle
Tatsächlich kann die Variable festgelegt werden oder nicht. In Java 8 oder höher sollte ihr nullbarer Wert in ein
Optional
Objekt eingeschlossen werden, das wirklich gute Funktionen ermöglicht. Im folgenden Beispiel werden wir versuchen, die Variable zu erhaltenENV_VAR1
. Wenn sie nicht existiert, können wir eine benutzerdefinierte Ausnahme auslösen, um darauf aufmerksam zu machen:quelle
Google sagt, getenv () auszuchecken :
Ich bin mir jedoch nicht sicher, wie sich Systemvariablen von Umgebungsvariablen unterscheiden. Wenn Sie also klarstellen könnten, könnte ich Ihnen weiterhelfen.
quelle
Haben Sie versucht, einen Neustart durchzuführen, seit Sie die Umgebungsvariable festgelegt haben?
Es scheint, dass Windows seine Umgebungsvariable in einer Art Cache hält, und ein Neustart ist eine Methode, um sie zu aktualisieren. Ich bin nicht sicher, aber es gibt möglicherweise eine andere Methode, aber wenn Sie Ihren Variablenwert nicht zu oft ändern, ist dies möglicherweise gut genug.
quelle
Wie oben erwähnt, hat der Neustart von Eclipse für mich für die benutzerdefinierte Umgebungsvariable funktioniert. Nachdem ich die Eclipse-IDE neu gestartet habe,
System.getenv()
wird meine Umgebungsvariable abgerufen.quelle
Sind Sie auf einem Linux-System? Wenn ja, stellen Sie sicher, dass Sie Ihre Variable exportieren.
Ich erhalte null, es sei denn, ich verwende den Export, um den Wert global zu definieren.
quelle