-4

CLASSPATHを使用して Java プログラムから env 変数を設定しようとしていますruntime.exec()

String classpath = "my.jar";
String[] command1 = { "setenv", "CLASSPATH", classpath };

OSはLinuxです。

これの何が問題なのですか?

4

2 に答える 2

2

この方法で環境変数を設定することはできません。

呼び出すruntime.exec()と、Java プログラムの環境のコピーを含む独自の環境スペースを取得する新しいプロセスが作成されます。はその環境でsetenv実行さますが、そのプロセスは終了し、その環境は破棄されます。

現在のプログラムから起動しようとしている別の Java プログラムのクラスパスを変更する場合は、変更した環境を に渡すことができますProcessBuilder

于 2012-10-26T07:05:08.500 に答える
1

はい、次の理由で例外がスローされます。

A program can modify its environment variables within the process it's running. 
It can also pass those changes on to child processes. It cannot (generally) 
modify its parent's environment.

それを行うための Java API はありません。

于 2012-10-26T07:07:23.593 に答える