Eclipse的E4:IStartup扩展不工作(Eclipse e4 : IStartup ext

2019-11-01 08:19发布

我试图扩大“org.eclipse.ui.startup”增广点。 但似乎在eclipse E4,它甚至不获取调用。 被这个扩展是Eclipse E4破碎(朱诺)

Answer 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/



Answer 2:

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扩展文档



文章来源: Eclipse e4 : IStartup extension not working