从Java运行cygwin编译的程序

问题描述:

我使用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

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

我有另一个可执行文件,当用作ProcessBuilder("exe-path","arg1","arg2"..)时工作。

我不知道为什么前执行只能在cmd下运行。

两者都是使用cygwin构建的。我曾尝试将cygwin1.dll放在工作目录中,但没有任何影响。