我有一些使用 Java apache exec 类来运行外部进程的简单代码。
Executor ex = new DefaultExecutor();
ex.setStreamHandler(new PumpStreamHandler(System.out, System.out, System.in));
CommandLine cl = new CommandLine(
"C:\\program.exe");
ex.execute(cl);
对于某些命令行程序,这会按预期工作,并将程序的所有输出都放入“out”流中,同时将我自己的文本接受到“in”流中。但是,对于其他程序,进程的输出是可见的,从命令行手动运行,但是当我通过 java 进程运行时,我没有得到任何东西。
我想最终写入标准输入并在代码本身中检索和分析标准输出。
如果有我不知道的原因,为什么有些程序似乎在命令行上输出文本,但当我将它们作为 java 进程运行时,我却没有通过流接收到任何东西?
这发生在 Windows 中。
最佳答案
进程外代码不会转到相同的命令行输出,除非您明确配置它这样做。此外,作为一般规则,最好使用像 log4j 这样的日志库而不是执行 println 语句。
关于java - Windows 中缺少 Java 进程的命令行输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9994157/