Я пытаюсь расширить точку расширения "org.eclipse.ui.startup". но кажется, что в eclipse e4 он даже не вызывается. это расширение не работает в eclipse e4 (Juno)
Eclipse e4: расширение IStartup не работает
Ответы (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/
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