Javaシステムプロパティと環境変数


回答:


148

2つの違いは、結局アクセスすることだと思います。システム環境変数には任意のプロセスからアクセスでき、Javaシステムプロパティにはそれらが追加されたプロセスからのみアクセスできます。

また、Bohemianが述べたように、env変数はOSで設定され(ただし、Javaを介して設定できます)、システムプロパティはコマンドラインオプションとして渡されるか、を介して設定されますsetProperty()


5
最後に、変数の追加方法と変数のスコープです。
Praveen Sripati、2011

他のプロセスは、プロセスの起動に使用されたcmdを見つけることができるため、Javaシステムプロパティも見つけることができることに注意してください。
クリスチャン

359

42
まったく正しい、ボヘミアン。環境変数は「OSのもの」であり、プロパティは「Javaのもの」です。たまたま、JavaはOS変数をプロパティとして公開することを選択しました(Javaが現在のディレクトリと「その他のもの」をプロパティとして公開するのと同じように)が、実際には異なるものです。
paulsm4 2011

@MarekSeberaどういう意味ですか?
ボヘミアン

8
System.grtProperties()すべてのプロパティが一覧表示され、コマンドラインから設定されたプロパティがそこに表示されますが、システムが追加した他のプロパティと区別する方法はありません。
ボヘミアン

11
環境変数を使用してシステムプロパティを設定することもできますJAVA_TOOL_OPTIONS
2014年

6
@KanagaveluSugumarはい、再起動する必要があります:環境変数の設定は、起動時に環境から読み込まれます。つまりSystem.getenv(String name)、呼び出し時にシステムから動的に値を読み取りません。
ボヘミアン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.