web-dev-qa-db-ja.com

Javaでシステム変数値を取得するにはどうすればよいですか?

に存在するシステム変数値を取得するにはどうすればよいですか

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

javaで?

編集

System.getenv()メソッドを使用しました。

贈れば印刷価値です

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

私が作成したシステム変数に対して同じことをしようとすると、null値が表示されます

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

System.getenv(String) メソッドを使用して、読み取る変数の名前を渡します。

158
Rob

明確にするために、システム変数は環境変数と同じです。ユーザー環境変数はユーザーごとに設定され、異なるユーザーがログインするたびに異なります。システム全体の環境変数は、どのユーザーがログオンしても同じです。

システム全体の変数またはJavaのユーザー変数の現在の値にアクセスするには、以下を参照してください。

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

環境変数の詳細については、これを参照してください wikipediaページ

また、次の操作を実行して、Javaを呼び出す前に、読み取ろうとしている環境変数が適切に設定されていることを確認します。

echo %MYENVVAR%

環境変数の値が表示されます。そうでない場合は、シェル(DOS)を再度開くか、ログオフして再度ログオンする必要があります。

51
Elijah

システム/環境のプロパティを取得する際に関心のあるいくつかの詳細があります。

最初に、System.getenv(String)が導入され、その後廃止されました。非推奨(愚かにも、IHMO)は続きました JSE 1.4までずっと

JSE 5で再導入 になりました。

これらは、Windowsの[環境変数]パネルを使用して設定されます。現在のVMがシャットダウンされ、CMD.exeインスタンスが終了するまで、変数への変更が反映されない場合があります。

環境プロパティとは対照的に、JavaにはJavaシステムプロパティもあり、 System.getProperties() からアクセスできます。これらの変数は、VMが一連の-Dname=valueコマンドライン引数を使用して開始されるときに初期化できます。たとえば、プロパティmaxInMemoryおよびpagingDirectoryの値は、以下のコマンドで設定されます。

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

これらのプロパティは、セキュリティポリシーの制限がない限り、実行時に変更できます。

24
Dilum Ranatunga

実際に変数を設定することも設定しないこともできるので、In Java 8以降では、null許容値をOptionalオブジェクトにラップする必要があります。次の例では、変数ENV_VAR1の取得を試みます。変数が存在しない場合は、カスタム例外をスローして、それについて警告します。

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

Googleはチェックアウトするように言っています getenv()

現在のシステム環境の変更不可能な文字列マップビューを返します。

ただし、システム変数が環境変数とどのように異なるかはわかりません。

5
Chris Bunch

上記のsombodyで述べたように、Eclipseを再起動すると、ユーザー定義の環境変数が機能しました。 Eclipse IDEを再起動すると、System.getenv()が環境変数を取得します。

3
voidMainReturn

環境変数を設定してから再起動を試みましたか?

Windowsは環境変数を何らかのキャッシュに保持しているように見えますが、再起動はそれを更新する1つの方法です。よくわかりませんが、別の方法があるかもしれませんが、変数値をあまり頻繁に変更しないのであれば、これで十分でしょう。

1
trilobite

Linuxシステムを使用していますか?その場合は、変数をエクスポートしていることを確認してください。

myVar=testvalue; export myVar

エクスポートを使用して値をグローバルに定義しない限り、nullになります。

0
keving