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