以编程方式设置env变量

时间:2012-10-26 06:48:28

标签: java classpath environment-variables

我正在尝试使用CLASSPATH从我的Java程序设置runtime.exec() env变量。

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

操作系统是Linux。

这有什么问题?

2 个答案:

答案 0 :(得分:2)

您无法以这种方式设置环境变量。

当您调用runtime.exec()时,您将创建一个新进程,该进程获得自己的环境空间,其中包含Java程序环境的副本。 setenv 环境中运行,但随后该流程结束,其环境将被丢弃。

如果要更改要从当前程序启动的另一个Java程序的类路径,可以将修改后的环境传递给ProcessBuilder

答案 1 :(得分: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可以做到。