0

我正在尝试扩展“org.eclipse.ui.startup”扩展点。但似乎在 eclipse e4 中,它甚至没有被调用。这个扩展在 eclipse e4(Juno) 中被破坏了吗

4

2 回答 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
                }
            });

}

(#1) org.eclipse.ui.startup 扩展文档

于 2016-02-05T11:03:13.797 回答