2

stackoverflow で公開された以前の質問を解決しました。したがって、私の Java アプリケーションは、次のようなシステム環境を変更します。

Map<String, String> env = System.getenv();
...
...
map.put("SOME_VAR_ENV", "SOME_KEY_VAR");*

いくつかの文が後であるので、これはうまくいくようです:

System.out.println(System.getenv("SOME_VAR_ENV"));*

印刷しSOME_KEY_VARます。

そして、ここに私の問題があります。次の文で、私の Java アプリケーションは他の Java アプリケーションに制御を渡します。私のJavaアプリ。私の知る限り、実行する新しい子プロセスを作成する必要がある外部Javaクラスを呼び出します。ただし、新しいプロセスは新しい環境変数 (SOME_VAR_ENV) を保持していません。

何が起こっているのかわかりません。2 番目のアプリケーションが環境を保持していないのはなぜですか? どんなアイデアや助けも大歓迎です:)

ありがとう!

4

2 に答える 2

2

API を使用しProcessBuilderて子プロセスを開始すると、環境変数を設定できます。

 ProcessBuilder pb = new ProcessBuilder("myCommand", "myArg1", "myArg2");
 Map<String, String> env = pb.environment();
 env.put("VAR1", "myValue");
 env.remove("OTHERVAR");
 env.put("VAR2", env.get("VAR1") + "suffix");
 pb.directory(new File("myDir"));
 Process p = pb.start();

Java には、呼び出しコンテキストの環境変数を設定するクロスプラットフォームの方法はありません。

于 2012-04-27T13:53:47.023 に答える
0

Javaプロパティファイルの書き込みと読み取りを調べます。

于 2012-04-27T14:37:50.980 に答える