将参数传递给Runtime.getRuntime()。exec(),并在开头添加一个选项

时间:2016-02-10 22:55:58

标签: java unix environment-variables runtime.exec

我试图将以下命令传递给Runtime.getRuntime()。exec(),其中选项应该在开头。

option="something" ./test.sh a b

无论我尝试什么,我都会遇到这个例外:

Cannot run program "option="something"": error=2, No such file or directory

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

执行option="something"仅适用于shell,以便为此特定进程设置环境变量。要在java中执行此操作,您必须使用exec的一个重载,它将环境变量作为参数。

如: https://docs.oracle.com/javase/7/docs/api/java/lang/Runtime.html#exec(java.lang.String[],%20java.lang.String[])

或使用ProcessBuilder: https://docs.oracle.com/javase/7/docs/api/java/lang/ProcessBuilder.html

编辑:

您应该注意,为新进程显式设置环境变量会导致忽略当前程序中的所有环境变量。如果要传递当前环境变量,则必须自己包含它们。