如果我从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退出,但没有创建文件,这让我相信出现了问题。
有什么建议吗?
答案 0 :(得分:0)
您需要调用ProcessBuilder.inheritIO()
,因为您对捕获Java程序中的输出不感兴趣。
默认I / O模式为Redirect.PIPE
,用于管理Java程序(很少使用)的命令输入,以及管道命令输出(和错误输出)到Java程序。
该命令正在尝试编写输出,并且最初正在等待Java程序检索它。当您的Java程序随后终止时,该命令会在管道上出现写入错误,导致命令终止,然后才能执行所需的作业。