2
我在开发Eclipse插件时遇到了Java的ProcessBuilder问题。 我在调用start()方法之前正确地设置了环境,但是当我运行该程序时,它总是返回一个未找到命令的错误。Java ProcessBuilder:环境设置正确,但仍然没有找到命令
当我通过命令行调用命令时,它完美地工作。
当我根据需要用环境启动eclipse时,找到该命令并且程序正常工作。
只有当我以编程方式设置环境时,程序将失败。
以下是我有:
ProcessBuilder pb = new ProcessBuilder("my_command", file, output);
Map<String, String> env = pb.environment();
env.put("PATH", env.get("PATH") + File.pathSeparator + env1 + File.pathSeparator + env2);
Process p = pb.start();
...
其中,env1
和env2
是我想要添加到PATH变量的路径...
什么是错误的代码?
预先感谢您!
感谢您的回复。但我认为这是不可能的,因为我想添加到环境路径中的路径可能会在运行时被用户添加...无论如何,如果我明白,System.getenv()不能在运行时修改。我错了吗? – pnpo
感谢您的更新! – pnpo
只有现在我已经看到你的回复这个更新。实际上,在了解了ProcessBuilder的真实工作方式(我不得不说,它是基于您的第一个答案)之后,我自己也得出了相同的结论。因此,我们在调用'start()'之前设置的环境被传递给在启动过程中执行的命令并且** not **被当前在JVM上运行的进程使用(它负责查找为进程中的命令启动)。 – pnpo