1

我正在尝试使用 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...
}

是否有我缺少的启动命令的参数导致它们在自己的控制台窗口中产生?还是需要调用执行程序类的其他方法?

4

0 回答 0