JVMのシステムプロパティSystem.getProperties()と環境変数System.getenv()の違いは何ですか?
JVMのシステムプロパティSystem.getProperties()と環境変数System.getenv()の違いは何ですか?
回答:
2つの違いは、結局アクセスすることだと思います。システム環境変数には任意のプロセスからアクセスでき、Javaシステムプロパティにはそれらが追加されたプロセスからのみアクセスできます。
また、Bohemianが述べたように、env変数はOSで設定され(ただし、Javaを介して設定できます)、システムプロパティはコマンドラインオプションとして渡されるか、を介して設定されますsetProperty()
。
システムプロパティは、-Dpropertyname=value
構文を使用してJavaコマンドラインで設定されます。また、実行時System.setProperty(String key, String value)
にさまざまなSystem.getProperties().load()
メソッドを使用して、またはさまざまなメソッドを介して
追加することもできます。
特定のシステムプロパティを取得するには、System.getProperty(String key)
またはを使用できますSystem.getProperty(String key, String def)
。
環境変数は、Linuxexport HOME=/Users/myusername
やWindowsSET WINDIR=C:\Windows
などのOSで設定され、プロパティとは異なり、実行時に設定されない場合があります。
特定の環境変数を取得するには、を使用できますSystem.getenv(String name)
。
System.grtProperties()
すべてのプロパティが一覧表示され、コマンドラインから設定されたプロパティがそこに表示されますが、システムが追加した他のプロパティと区別する方法はありません。
JAVA_TOOL_OPTIONS
。
System.getenv(String name)
、呼び出し時にシステムから動的に値を読み取りません。