我正在尝试使用CLASSPATH
从我的Java程序设置runtime.exec()
env变量。
String classpath = "my.jar";
String[] command1 = { "setenv", "CLASSPATH", classpath };
操作系统是Linux。
这有什么问题?
答案 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可以做到。