从Java运行cygwin编译程序

从Java运行cygwin编译程序,java,cygwin,Java,Cygwin,我使用cygwin构建了一个.exe。它被称为ms.exe。我正在尝试使用ProcessBuilder从java运行它。我以前使用过ProcessBuilder来捕获其输出 在命令窗口(cmd.exe)上,如果运行ms.exe[ms params]>output.txt。然后输出包含 /cygdrive/c/my-path-to-ms.exe[msparams] [程序输出] 在命令窗口上,如果我没有传递任何重定向,即>output.txt,则输出仅由[program output]组成 请注意

我使用cygwin构建了一个.exe。它被称为ms.exe。我正在尝试使用ProcessBuilder从java运行它。我以前使用过ProcessBuilder来捕获其输出

在命令窗口(cmd.exe)上,如果运行ms.exe[ms params]>output.txt。然后输出包含

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

[程序输出]

在命令窗口上,如果我没有传递任何重定向,即>output.txt,则输出仅由[program output]组成

请注意,我的PATH env变量下有%CYGWIN_HOME%/bin

使用ms.exe调用ProcessBuilder结束(没有任何异常),但作为输出,我只得到

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

使用
ProcessBuilder(“cmd.exe”、“C”、“带参数的整个exe路径”)
运行可执行文件

我有另一个可执行文件,当用作
ProcessBuilder(“exe路径”、“arg1”、“arg2”)
时可以运行

我不知道为什么前一个可执行文件只在cmd下运行


两者都是使用cygwin构建的。我已尝试将cygwin1.dll放入工作目录,但没有任何效果。

如何从
流中读取
?您检查了错误流和标准输出流了吗?我可以从process.getInputStream读取,但结果与我得到的一行相同。我简化了代码,只使用processBuilder.redierctOutput写入文件。该文件以同一行结束。我正在捕获强制IoException和InterruptedException,但那里什么都没有。我的猜测是,当我从命令行运行时,会涉及bash。