我正在尝试使用Apache Commons Exec库在自己的窗口中启动多个批处理文件,虽然我能够正确启动它们,但我遇到了一个小问题,即JVM产生的输出正在窗口中显示原始进程。我需要它们全部显示在他们自己的单独窗口中,但尽管使用了我认为正确的参数,所有输出转储到原始控制台。
以下是我如何产生这些过程。
CommandLine cmd = new CommandLine("cmd");
cmd.addArgument("start");
cmd.addArgument("/MIN");
cmd.addArgument("/I");
cmd.addArgument("cmd.exe");
cmd.addArgument("/C");
cmd.addArgument(script);
cmd.addArgument(groupName);
Executor executor = new DefaultExecutor();
DefaultExecuteResultHandler resultHandler = new DefaultExecuteResultHandler();
try {
PumpStreamHandler psh = new PumpStreamHandler(new ExecOutputStream(LOG, Level.DEBUG), new ExecOutputStream(LOG, Level.ERROR));
executor.setWatchdog(watchdog);
executor.setExitValue(0);
executor.setStreamHandler(psh);
executor.execute(cmd, resultHandler);
resultHandler.waitFor(5_000);
} catch(IOException io) {
// handle IOException...
} catch(InterruptedException ie) {
// handle InterruptedException...
}
我是否缺少启动命令的参数,导致这些参数在自己的控制台窗口中生成?或者是否需要调用执行程序类的其他方法?