Eclipse e4: расширение IStartup не работает

Я пытаюсь расширить точку расширения "org.eclipse.ui.startup". но кажется, что в eclipse e4 он даже не вызывается. это расширение не работает в eclipse e4 (Juno)


person Khalid Azam    schedule 27.12.2012    source источник


Ответы (2)


У меня была та же проблема, и я не мог найти ответа, но в процессе я обнаружил 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/

person Max Hohenegger    schedule 28.12.2012

IStartup#earlyStartup() нуждается в уровне совместимости, поэтому он не работает в чистом приложении E4. (см. #1)

Чтобы запустить процесс в чистом приложении E4, вы должны использовать хук жизненного цикла. Так:

Ссылка на класс обработчика ApplicationLifecycle из plugin.xml

<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

person psuzzi    schedule 05.02.2016
comment
Привет @psuzzi, не могли бы вы рассказать мне больше о слое совместимости, который вы упомянули в своем комментарии. У меня похожая проблема, но я не могу редактировать код плагина. Поэтому мне было интересно, может ли установка некоторых плагинов совместимости помочь мне заставить его работать с e4Application. Спасибо - person user578219; 21.03.2018