-4

我正在尝试CLASSPATH使用runtime.exec().

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

操作系统是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 回答