Java 从Eclipse控制台获取数据

Java 从Eclipse控制台获取数据,java,eclipse,eclipse-plugin,Java,Eclipse,Eclipse Plugin,我有一个命令,使用Eclipse执行这个命令。结果打印到控制台选项卡中 String[] cmdLine = buildCommandLine(configuration, true); Process process = DebugPlugin.exec(cmdLine, null, null); DebugPlugin.newProcess(launch, process, "", null); 如何从控制台选项卡获取所有数据?向流程中添加一个 IProcess pro

我有一个命令,使用Eclipse执行这个命令。结果打印到控制台选项卡中

String[] cmdLine = buildCommandLine(configuration, true);     
Process process = DebugPlugin.exec(cmdLine, null, null);     
DebugPlugin.newProcess(launch, process, "", null);
如何从控制台选项卡获取所有数据?

向流程中添加一个

IProcess process = DebugPlugin.newProcess(launch, process, "", null);
IStreamsProxy streamsProxy = process.getStreamsProxy();
IStreamMonitor streamMonitor = streamsProxy.getOutputStreamMonitor();

IStreamListener yourListener = ....;

streamMonitor.addListener(yourListener );
我会这样做,因为上面的代码是“核心代码”(没有ui代码)
org.eclipse.debug.core

如果按照中的建议使用,将引入从核心到ui代码的依赖关系。

方法的文档
DebugPlugin.newProcess
说明:

创建并返回表示给定java.lang.process的新进程。为系统进程中的I/O流创建流代理

因此,这里有两件值得注意的事情:第一,这个方法返回一些东西(您忽略了)。其次,它有一个streams代理,用于访问进程的I/O流。您只需查询它们以获得所需的输出:

String[] cmdLine = buildCommandLine(configuration, true);
Process p = DebugPlugin.exec(cmdLine, null);
IProcess process = DebugPlugin.newProcess(launch, p, "");
process.getStreamsProxy().getErrorStreamMonitor().addListener(myErrorStreamListener());
process.getStreamsProxy().getOutputStreamMonitor().addListener(myOutputStreamListener());

您必须实现myErrorStreamListener和myOutputStreamListener方法,以返回能够赶上控制台输出的适当侦听器。

感谢您的回答。我的程序需要运行2个命令。第二个命令将基于上一个命令的结果运行。我使用IStreamListener()获取第一个命令的结果,并检查运行第二个命令的条件,但输出分为两个控制台输出如何将两个命令的内容附加到一个控制台?好的,我完成了。谢谢