我有一個全局安裝的節點模塊:rollup
,但可以是任何其他模塊。如果我打開命令提示符(贏得10)並輸入rollup -v
它將返回模塊版本。我試圖在java中使用ProcessBuilder
/Process
來實現此目的。使用Java ProcessBuilder調用全局安裝的節點模塊
這裏是我的Java代碼:
ProcessBuilder pb = new ProcessBuilder("rollup","-v");
File log = new File("log.txt");
pb.redirectErrorStream(true);
pb.redirectOutput(Redirect.appendTo(log));
Process p = pb.start();
assert pb.redirectInput() == Redirect.PIPE;
assert pb.redirectOutput().file() == log;
assert p.getInputStream().read() == -1;
它返回以下錯誤:
java.io.IOException: Cannot run program "rollup": CreateProcess error=2, The system cannot find the file specified
如果我java -version
或node -v
它的工作進行測試。
我有一個工作解決方案,但我不喜歡它,它有點混亂。我創建了一個bat文件:
//test.bat
rollup -v
然後我運行批處理文件ProcessBuilder pb = new ProcessBuilder("test.bat");
和工作,但在未來我希望其他參數傳遞給rollup
,我不希望創建爲每個不同的bat文件參數。
我想我錯過了一些東西,我不知道是什麼?我是新來處理API。