1. ホーム
  2. java

[解決済み] Javaから環境変数を設定するにはどうしたらいいですか?

2022-03-16 11:41:49

質問

Javaから環境変数を設定するにはどうすればよいですか? サブプロセスに対しての設定は ProcessBuilder . しかし、起動するサブプロセスがいくつかあるので、むしろ現在のプロセスの環境を変更して、サブプロセスにそれを継承させたいと思っています。

そこには System.getenv(String) を使用すると、1つの環境変数を取得することができます。また Map で環境変数一式の System.getenv() . しかし put() その上で Map を投げる。 UnsupportedOperationException -- どうやら、環境を読み取り専用にすることを意味しているようです。そして System.setenv() .

では、現在実行中のプロセスで環境変数を設定する方法はあるのでしょうか? もしあれば、どのように? ない場合、その根拠は何ですか? (これはJavaだから、環境を触るような邪悪な非移植性の時代遅れのことをしてはいけないからでしょうか?) そして、そうでない場合、私がいくつかのサブプロセスに供給する必要がありそうな環境変数の変更を管理するための何か良い提案はありますか?

解決方法は?

<ブロッククオート

(これはJavaだから、自分の環境を触るような邪悪な非移植性の時代遅れのことをしてはいけないということでしょうか?)

正鵠を射ていると思います。

負担を軽減する方法として考えられるのは、メソッドを因数分解することです。

void setUpEnvironment(ProcessBuilder builder) {
    Map<String, String> env = builder.environment();
    // blah blah
}

を指定し、任意の ProcessBuilder を起動する前に通過させる。

また、すでにご存知の方も多いと思いますが、複数のプロセスを同じ ProcessBuilder . そのため、サブプロセスが同じであれば、この設定を何度も行う必要はありません。