我正在尝试扩展“org.eclipse.ui.startup”扩展点。但似乎在 eclipse e4 中,它甚至没有被调用。这个扩展在 eclipse e4(Juno) 中被破坏了吗
问问题
1238 次
2 回答
1
我遇到了同样的问题,找不到答案,但在这个过程中,我发现了 LifeCycleHandler,这对我的目的来说甚至更好。这对您来说可能也是一个不错的选择。
就像启动扩展一样,您可以从您的 plugin.xml 中引用处理程序:
<property name="lifeCycleURI" value="platform:/plugin/<plug-in-id>/<path-to-handler-class>" />
在处理程序中,您可以使用注释来标记要调用的方法以及依赖注入:
public class StartupHandler {
@Inject
Foo bar;
@PostContextCreate
public void startup(IEclipseContext context) {
// do something
}
}
您可以在此处找到详细示例:https ://marcteufel.wordpress.com/2011/05/05/231/
于 2012-12-28T17:06:57.357 回答
1
IStartup#earlyStartup() 需要兼容层,所以它在纯 E4 应用程序中不起作用。(见#1)
要在纯 E4 应用程序中启动进程,您应该使用生命周期挂钩。所以:
从 plugin.xml 引用您的 ApplicationLifecycle 处理程序类
<property name="lifeCycleURI" value="platform:/plugin/<plug-in-id>/<path-to-handler-class>" />
编写您的生命周期处理程序类
public class ApplicationLifecycleHandler {
@PostContextCreate
public void startup(IEclipseContext context) {
// do initialization
}
}
添加一个钩子来处理应用程序启动完成时的事件
@PostContextCreate
public void postContextCreate(final IEventBroker eventBroker, etc .. ) {
//
eventBroker.subscribe(UIEvents.UILifeCycle.APP_STARTUP_COMPLETE,
new EventHandler() {
@Override
public void handleEvent(Event event) {
// Your code executed at startup,
// after application startup is completed
}
});
}
于 2016-02-05T11:03:13.797 回答