6

環境変数の一部が JVM によって取得されていないことに気付きました。

私の.bash_profile中で私は次のように定義しました:

IO_HOME='some_value'
export IO_HOME

そしてシェルで行うことによって:

echo $IO_HOME

正しい結果が得られます。

しかし、この変数が設定されていることSystem.getProperties()も示していません。System.getenv()Java 6 と Java 7 の両方を試しました。

足りないものはありますか?

4

2 に答える 2

7

生成されたプロセスへの環境のエクスポートはかなり安定しています。変数が含まれていない場合System.getenv()は、環境にないためです。プロセスの開始方法に関連するいくつかの確認事項:

  • 変数がエクスポートされている環境から Java プロセスを開始していますか? たとえば、.bash_profile にあり、メニューまたはデスクトップから Java プログラムを実行している場合、デスクトップの .bash_profile に変数を追加した後、ログアウトしてログインする必要があります。

  • 変数はプロセスの環境から明示的に削除されていますか? ProcessBuilderでは、プロセスを生成するほとんどの API と同様に、これが可能です。

試してみるべきことの 1 つは、変数がそのシェルでエクスポートされていることを確認した後、コマンド ライン シェルからプロセスを開始することです。

于 2012-12-06T17:00:37.683 に答える
3

System.getenv()Windows から、ユーザーまたはシステムの環境変数を設定した後、IntelliJ がすべての環境変数を表示することを拒否するという奇妙な動作を最近見ました。その秘訣は、DOS ボックスから IntelliJ を起動することでした。Windows ユーザーの場合: 再起動 (またはログオフ/ログオン) すると問題が解決する場合があります。

于 2015-10-02T07:28:54.597 に答える