Was ist der Unterschied zwischen den Systemeigenschaften System.getProperties () und den Umgebungsvariablen System.getenv () in einer JVM?
Was ist der Unterschied zwischen den Systemeigenschaften System.getProperties () und den Umgebungsvariablen System.getenv () in einer JVM?
Antworten:
Ich denke, der Unterschied zwischen den beiden läuft auf den Zugang hinaus. Auf Systemumgebungsvariablen kann von jedem Prozess zugegriffen werden, und auf Java-Systemeigenschaften kann nur von dem Prozess zugegriffen werden, zu dem sie hinzugefügt wurden.
Wie von Bohemian angegeben, werden env-Variablen im Betriebssystem festgelegt (sie können jedoch über Java festgelegt werden) und Systemeigenschaften werden als Befehlszeilenoptionen übergeben oder über festgelegt setProperty()
.
Systemeigenschaften werden in der Java-Befehlszeile mithilfe der-Dpropertyname=value
Syntax festgelegt. Sie können auch zur Laufzeit mitSystem.setProperty(String key, String value)
oder über die verschiedenen
System.getProperties().load()
Methodenhinzugefügtwerden.
Um eine bestimmte Systemeigenschaft abzurufen , können SieSystem.getProperty(String key)
oder verwendenSystem.getProperty(String key, String def)
.
Umgebungsvariablen werden im Betriebssystem festgelegt, z. B. unter Linuxexport HOME=/Users/myusername
oder WindowsSET WINDIR=C:\Windows
usw., und können im Gegensatz zu Eigenschaften möglicherweise nicht zur Laufzeit festgelegt werden.
Um eine bestimmte Umgebungsvariable zu erhalten, können Sie verwendenSystem.getenv(String name)
.
System.grtProperties()
listet alle Eigenschaften auf, und die über die Befehlszeile festgelegten werden dort sein, aber es gibt keine Möglichkeit, diese von den anderen vom System hinzugefügten Eigenschaften zu unterscheiden, wenn Sie dies wünschen.
JAVA_TOOL_OPTIONS
.
System.getenv(String name)
liest den Wert zum Zeitpunkt des Aufrufs nicht dynamisch aus dem System.