203

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

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

Javaで?

編集

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

あげるなら印刷値です

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

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

System.out.println(System.getenv("DBE"));
4

8 に答える 8

232

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

于 2009-02-10T09:48:10.637 に答える
57

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

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

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

環境変数の詳細については、このウィキペディアのページを参照してください。

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

echo %MYENVVAR%

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

于 2009-02-10T10:26:14.320 に答える
30

システム/環境のプロパティを取得する際に、興味深い点がいくつかあります。

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

JSE 5で再導入されました

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

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

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

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

于 2009-02-11T09:50:05.263 に答える
27

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

String ENV_VAR1 = Optional.ofNullable(System.getenv("ENV_VAR1")).orElseThrow(
  () -> new CustomException("ENV_VAR1 is not set in the environment"));
于 2016-06-17T14:51:30.730 に答える
6

Google はgetenv()をチェックするように言っています:

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

ただし、システム変数が環境変数とどのように異なるのかはわかりません。明確にしていただければ、さらにお手伝いできます。

于 2009-02-10T09:49:47.963 に答える
5

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

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

于 2009-02-10T13:13:08.543 に答える
4

上記の誰かが述べたように、ユーザー定義の環境変数に対してEclipseを再起動するとうまくいきました。Eclipse IDE を再起動System.getenv()すると、環境変数が取得されます。

于 2016-11-21T10:04:57.083 に答える