CLASSPATH
を使用して Java プログラムから env 変数を設定しようとしていますruntime.exec()
。
String classpath = "my.jar";
String[] command1 = { "setenv", "CLASSPATH", classpath };
OSはLinuxです。
これの何が問題なのですか?
CLASSPATH
を使用して Java プログラムから env 変数を設定しようとしていますruntime.exec()
。
String classpath = "my.jar";
String[] command1 = { "setenv", "CLASSPATH", classpath };
OSはLinuxです。
これの何が問題なのですか?
この方法で環境変数を設定することはできません。
呼び出すruntime.exec()
と、Java プログラムの環境のコピーを含む独自の環境スペースを取得する新しいプロセスが作成されます。はその環境でsetenv
実行されますが、そのプロセスは終了し、その環境は破棄されます。
現在のプログラムから起動しようとしている別の Java プログラムのクラスパスを変更する場合は、変更した環境を に渡すことができますProcessBuilder
。
はい、次の理由で例外がスローされます。
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 はありません。