使用Apache Exec在命令执行期间接收反馈

时间:2012-05-31 23:46:28

标签: java apache exec

我已经在Apaches的网站上实施了一个示例:http://commons.apache.org/exec/tutorial.html

我现在需要的是倾听/接收来自沉重过程的反馈。

我知道如何使用setStreamHandler方法打印处理结果,但执行完成后会显示此结果。

1 个答案:

答案 0 :(得分:0)

我建议你阅读PumpStreamHandlerInputStreamPumper。你几乎完全想要这些类。只需修改InputStreamPumper.run()循环即可。它应该触发你的事件,而不是os.write()。要允许结果在进程运行时开始到达,请按以下方式调用它:

CommandLine cmdLine = new CommandLine(yourExecutable);
DefaultExecuteResultHandler resultHandler = new DefaultExecuteResultHandler();

Executor executor = new DefaultExecutor();
executor.setStreamHandler(new YourPumpStreamHandler());
executor.execute(cmdLine, resultHandler);
// until waitFor returns, the process is running and events can be generated
int exitValue = resultHandler.waitFor();