在Eclipse 4 RCP应用程序可见之前重新启动它

在Eclipse 4 RCP应用程序可见之前重新启动它,eclipse,rcp,e4,Eclipse,Rcp,E4,我正在开发一个Eclipse4RCP应用程序,我需要它在可见之前执行一些任务,然后重新启动 我运行的应用程序检查P2存储库并自动更新/安装/卸载某些插件。我希望此步骤对用户透明,因此我使用LifeCycleURI属性在“postContextCreate”方法中运行此步骤 完成后,我需要重新启动应用程序(以便正确加载插件),但是我不能在这里注入工作台,因为它还没有创建。如果您有任何建议或想法,我将不胜感激 提前谢谢 最早获得工作台的方法可能是使用事件代理订阅应用程序启动完成事件UIEvents.

我正在开发一个Eclipse4RCP应用程序,我需要它在可见之前执行一些任务,然后重新启动

我运行的应用程序检查P2存储库并自动更新/安装/卸载某些插件。我希望此步骤对用户透明,因此我使用LifeCycleURI属性在“postContextCreate”方法中运行此步骤

完成后,我需要重新启动应用程序(以便正确加载插件),但是我不能在这里注入工作台,因为它还没有创建。如果您有任何建议或想法,我将不胜感激


提前谢谢

最早获得工作台的方法可能是使用事件代理订阅应用程序启动完成事件
UIEvents.UILifeCycle.APP\u startup\u complete
。但是,只有在显示UI之后才会触发

更新: 事件处理程序类似于:

私有静态最终类AppStartupCompleteEventHandler实现EventHandler
{
私有最终IEclipseContext\u上下文;
AppStartupCompleteEventHandler(最终IEclipseContext上下文)
{
_上下文=上下文;
}
@凌驾
公共无效handleEvent(最终事件)
{
IWorkbench workbench=_context.get(IWorkbench.class);
workbench.restart();
}
}
在@PostContextCreate方法中订阅此事件

@PostContextCreate
public void postContextCreate(IEclipseContext上下文,IEventBroker事件代理)
{
订阅(UIEvents.UILifeCycle.APP_STARTUP_COMPLETE,新的AppStartupCompleteEventHandler(上下文));
}

我如何从那里获得工作台?我不能使用“PlatformUI.getWorkbench()”,因为我运行的是纯E4应用程序。我还尝试订阅该事件,使用“new EventHandler(){…}”并尝试将IWorkBench作为字段注入其中,但它为null(因为我认为EventHandler是在工作台之前创建的)。非常感谢你!您将向事件处理程序传递IEclipseContext,当事件触发时,上下文将包含我用于测试此内容的IWorkbench添加的示例。