使用Java中的参数运行.exe

时间:2015-11-21 16:19:35

标签: java

如果我从windows cmd运行以下命令,它会创建一个.clm文件:

hclm_build_model -p params_even.params -o lleven_regression.clm -g

我正在尝试从Java类中运行它,并根据我之前使用的回复:

Process process = new ProcessBuilder("hclm4\\hclm_build_model.exe", "-p", "params_even.params", "-o", "lleven_regression.clm", "-g").start();

请注意,我通常是通过在hclm4目录内部从cmd运行,而我的类是上一层。

代码以状态0退出,但没有创建文件,这让我相信出现了问题。

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

您需要调用ProcessBuilder.inheritIO(),因为您对捕获Java程序中的输出不感兴趣。

默认I / O模式为Redirect.PIPE,用于管理Java程序(很少使用)的命令输入,以及管道命令输出(和错误输出)到Java程序。

该命令正在尝试编写输出,并且最初正在等待Java程序检索它。当您的Java程序随后终止时,该命令会在管道上出现写入错误,导致命令终止,然后才能执行所需的作业。