如何使用IConsoleLineTracker在eclipse中读取控制台

时间:2011-08-23 07:02:02

标签: java eclipse-plugin eclipse-pde

我开发了一个插件,其中启动了一个java应用程序。在这个应用程序的控制台日志中,我希望在添加新行时收到通知。我已经搜索了互联网并找到了org.eclipse.debug.ui.consoleLineTrackers扩展点我已经像下面一样使用它了。

<extension point="org.eclipse.debug.ui.consoleLineTrackers">
  <consoleLineTracker 
     id="com.plugin.util.MyConsoleTracker"
     class="com.plugin.util.MyConsoleTracker"
     processType="MyProcessType">
  </consoleLineTracker>
</extension>  

然后在我的java代码中我启动了如下的应用程序。

config.setAttribute(IJavaLaunchConfigurationConstants.ATTR_CLASSPATH, classpath);
config.setAttribute(IJavaLaunchConfigurationConstants.ATTR_DEFAULT_CLASSPATH,false);
config.setAttribute(IJavaLaunchConfigurationConstants.ATTR_MAIN_TYPE_NAME,MAIN_CLASS_NAME);
config.setAttribute(IProcess.ATTR_PROCESS_TYPE, "MyProcessType");
ILaunch launch = DebugUITools.buildAndLaunch(config, ILaunchManager.DEBUG_MODE,new NullProgressMonitor()); 

在这些之后,我可以成功启动我的应用程序但是我的类com.plugin.util.MyConsoleTracker永远不会被调用。我也看不到任何错误日志。 任何人都可以告诉我这里缺少什么?

1 个答案:

答案 0 :(得分:0)

举个例子,你可以看到它是如何用m2e-core制作的:

http://git.eclipse.org/c/m2e/m2e-core.git/tree/org.eclipse.m2e.launching/src/org/eclipse/m2e/internal/launch/MavenConsoleLineTracker.java

http://git.eclipse.org/c/m2e/m2e-core.git/tree/org.eclipse.m2e.launching/plugin.xml

每次在控制台中显示新行时,都应该调用YourConsoleLineTrackers的方法。在线追踪器中,您必须区分此线属于哪个进程。

马立克