Eclipse插件之间的通信

Eclipse插件之间的通信,eclipse,plugins,communication,Eclipse,Plugins,Communication,我正在做一个Eclipse RCP应用程序。我已经创建了一个新的启动配置和一个视图。运行启动配置时,我会得到一组结果,并希望将这些结果发送到视图 在这一刻,我创建了一个新事件,其中包含以下结果: BundleContext ctx = FrameworkUtil.getBundle(TraditionalLaunchConfigurationDelegate.class).getBundleContext(); ServiceReference<EventAdmin> ref

我正在做一个Eclipse RCP应用程序。我已经创建了一个新的启动配置和一个视图。运行启动配置时,我会得到一组结果,并希望将这些结果发送到视图

在这一刻,我创建了一个新事件,其中包含以下结果:

  BundleContext ctx = FrameworkUtil.getBundle(TraditionalLaunchConfigurationDelegate.class).getBundleContext();
  ServiceReference<EventAdmin> ref = ctx.getServiceReference(EventAdmin.class);
  EventAdmin eventAdmin = ctx.getService(ref);
  Map<String, Results> properties = new HashMap<String, Results>();
  properties.put("MUTATIONRESULTS",  //$NON-NLS-1$
                    results);


  Event event = new Event("mutationcommunication/asyncEvent", properties); //$NON-NLS-1$

  eventAdmin.postEvent(event);
不起作用

是否有一种方法可以将元素发送到视图,如果视图不存在,则由哪种方法创建新实例

感谢您的帮助。

使用:

PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().showView("id");

显示视图(如果尚未显示,将创建视图)。

谢谢您的回答。我知道这个方法,但它抛出了一个空指针异常。我不知道我是否必须注册插件的id或类似的东西。哪个位是空的?工作台、活动工作台窗口和活动页面都可能为空。活动工作台为空,我不知道为什么。当我运行Eclipse RCP时,它会打开一个包含我所有插件的新Eclipse,显然它工作得很好。如果您正在使用自己的应用程序(实现
iaapplication
),您必须调用
PlatformUI.createAndRunWorkbench
,对不起,我说错了!它不是EclipseRCP应用程序(我不实现IAApplication)。它只是一个包含视图的插件(activator扩展了AbstractUIPlugin,my view扩展了ViewPart)。
PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().showView("id");