2013-07-23 65 views
0

我想使用的ProcessBuilder運行Windows的exe使用Java的ProcessBuilder不產生任何輸出文件如預期多個參數文件

ProcessBuilder pb = new ProcessBuilder("C:\\hMetis\\1.5.3-win32\\hmetis.exe", "test.hgr", "2", "1", "10", "1", "1", "1", "0", "0"); 
Process process = pb.start(); 

但是我的Java代碼運行在Windows 7的外部.exe程序,當我使用cmd從Windows運行此獨立.exe時,它會在命令提示符下輸出結果,並生成一個包含結果的文件。我沒有看到從Java運行.exe時出現這兩種情況。

任何類型的建議我錯過了什麼?

+2

1)閱讀(實施)*所有*的建議[當的Runtime.exec()不會(HTTP:// WWW。 javaworld.com/jw-12-2000/jw-1229-traps.html)。這可能會解決問題。如果不是,它應該提供更多關於失敗原因的信息。然後忽略它引用'exec'並(繼續)使用'ProcessBuilder'構建'Process'。 2)爲了更快地獲得更好的幫助,請發佈[SSCCE](http://sscce.org/)。 –

+0

你在程序中的'pb.start()'後面做了什麼? – Ingo

+0

@Ingo .. pb.start()後絕對沒有任何東西。 – joarderm

回答

3

嘗試使用此設置工作目錄:

File f = new File("C:\\hMetis\\1.5.3-win32"); 
ProcessBuilder pb = new ProcessBuilder("cmd", "/c","start","hmetis.exe", "test.hgr", "2", "1", "10", "1", "1", "1", "0", "0"); 
pb.directory(f); 
Process process = pb.start(); 
+0

運行建議的代碼會產生以下錯誤: 線程「main」中的異常java.io.IOException:無法運行程序「hmetis.exe」(在目錄「C:\ hMetis \ 1.5.3- win32「):CreateProcess error = 2,系統找不到指定的文件 – joarderm

+1

對不起,我在參數中添加了」cmd「,」/ c「,」start「,它現在應該工作。 – Gladiator

+0

它工作!非常感謝您給出絕對正確的答案。我現在正在獲得預期的結果以及輸出文件。 – joarderm

相關問題