2013-03-25 129 views
0

我使用cygwin構建了一個.exe文件。它被稱爲ms.exe。我正在嘗試使用ProcessBuilder從Java運行它。我之前使用過ProcessBuilder來捕獲它的輸出。從Java運行cygwin編譯的程序

在命令窗口(cmd.exe)上,如果我運行ms.exe [ms-params]> output.txt。然後輸出包含

/cygdrive/c/my-path-to-ms.exe [msparams]

[程序輸出]

在命令窗口中,如果我沒有通過任何重定向,即> output.txt,那麼輸出只包含[程序輸出]。

請注意,我在我的PATH env變量下有%CYGWIN_HOME%/ bin。

調用帶ms.exe端的ProcessBuilder(不用其他任何異常),但作爲輸出我只得到

/cygdrive/c/my-path-to-ms.exe [msparams]

+0

你如何從'Stream'中讀取?你有沒有檢查錯誤流以及標準輸出流? – 2013-03-25 17:13:53

+0

我可以從process.getInputStream中讀取,但結果與單行相同。我簡化了代碼,只使用processBuilder.redierctOutput來寫出一個文件。該文件結束於同一行。我追求強制IoException和InterruptedException,但沒有。我的猜測是,當我從命令行運行時,涉及到bash。 – Susanta 2013-03-25 17:36:20

回答

0

使用ProcessBuilder("cmd.exe","/C","entire-exe-path-with-arguments")運行可執行文件。

我有另一個可執行文件,當用作ProcessBuilder("exe-path","arg1","arg2"..)時工作。

我不知道爲什麼前執行只能在cmd下運行。

兩者都是使用cygwin構建的。我曾嘗試將cygwin1.dll放在工作目錄中,但沒有任何影響。