从Console of Eclipse获取数据

时间:2014-10-23 11:16:48

标签: java eclipse eclipse-plugin

我有一个命令并使用Eclipse来执行此命令。结果打印到Console选项卡中。

String[] cmdLine = buildCommandLine(configuration, true);     
Process process = DebugPlugin.exec(cmdLine, null, null);     
DebugPlugin.newProcess(launch, process, "", null);

如何从“控制台”选项卡获取所有数据?

2 个答案:

答案 0 :(得分:1)

为流程添加org.eclipse.debug.core.IStreamListener

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。 如果您使用MessageConsole中建议的How to read message from console tab view in eclipse plugin development,则会引入从核心到ui代码的依赖关系。

答案 1 :(得分:1)

方法DebugPlugin.newProcess的文档说:

  

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

所以,这里有两件事值得注意:首先,这个方法返回一些东西(你忽略了)。其次,它有一个流代理,用于访问进程的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());

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