に存在するシステム変数値を取得するにはどうすればよいですか
MyComputer -> Properties -> Advanced -> Environment Variables -> System Variables
javaで?
編集
System.getenv()
メソッドを使用しました。
贈れば印刷価値です
System.out.println(System.getenv("Java_HOME"));
私が作成したシステム変数に対して同じことをしようとすると、null
値が表示されます
System.out.println(System.getenv("DBE"));
System.getenv(String)
メソッドを使用して、読み取る変数の名前を渡します。
明確にするために、システム変数は環境変数と同じです。ユーザー環境変数はユーザーごとに設定され、異なるユーザーがログインするたびに異なります。システム全体の環境変数は、どのユーザーがログオンしても同じです。
システム全体の変数またはJavaのユーザー変数の現在の値にアクセスするには、以下を参照してください。
String javaHome = System.getenv("Java_HOME");
環境変数の詳細については、これを参照してください wikipediaページ 。
また、次の操作を実行して、Javaを呼び出す前に、読み取ろうとしている環境変数が適切に設定されていることを確認します。
echo %MYENVVAR%
環境変数の値が表示されます。そうでない場合は、シェル(DOS)を再度開くか、ログオフして再度ログオンする必要があります。
システム/環境のプロパティを取得する際に関心のあるいくつかの詳細があります。
最初に、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
これらのプロパティは、セキュリティポリシーの制限がない限り、実行時に変更できます。
実際に変数を設定することも設定しないこともできるので、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"));
Googleはチェックアウトするように言っています getenv() :
現在のシステム環境の変更不可能な文字列マップビューを返します。
ただし、システム変数が環境変数とどのように異なるかはわかりません。
上記のsombodyで述べたように、Eclipseを再起動すると、ユーザー定義の環境変数が機能しました。 Eclipse IDEを再起動すると、System.getenv()
が環境変数を取得します。
環境変数を設定してから再起動を試みましたか?
Windowsは環境変数を何らかのキャッシュに保持しているように見えますが、再起動はそれを更新する1つの方法です。よくわかりませんが、別の方法があるかもしれませんが、変数値をあまり頻繁に変更しないのであれば、これで十分でしょう。
Linuxシステムを使用していますか?その場合は、変数をエクスポートしていることを確認してください。
myVar=testvalue; export myVar
エクスポートを使用して値をグローバルに定義しない限り、nullになります。