2016-06-09 2 views
0

Я пытаюсь открыть мастер установки p2 по умолчанию, если нажата кнопка внутри моего приложения e4 RCP.Как открыть мастер установки p2 по умолчанию из приложения e4 RCP?

Я звоню ProvisioningUI.getDefaultUI().openInstallWizard внутри моего обработчика кликов, чтобы открыть мастер.

При нажатии на эту кнопку бросает:

java.lang.IllegalStateException: Workbench has not been created yet. 
    at org.eclipse.ui.PlatformUI.getWorkbench(PlatformUI.java:93) 
    at org.eclipse.equinox.internal.p2.ui.ProvUI.getDefaultParentShell(ProvUI.java:155) 
    ... 

The StackTrace показывает, что p2 пытается вызвать PlatformUI.getWorkbench, но, насколько я знаю, это не поддерживается в e4 приложений, инъекции зависимостей должен быть использован.

Как открыть мастер установки p2 по умолчанию из приложения e4 RCP?

Заранее спасибо.

ответ

1

Поскольку p2 UI зависит от кода режима совместимости Eclipse 3.x, такого как PlatformUI.getWorkbench, он не может использоваться в чистом приложении e4.

Вы можете использовать операции не-UI p2, поскольку они не нуждаются в коде режима совместимости.

+0

Спасибо, но как использовать этот режим совместимости в этом случае? Я нашел по крайней мере четыре разных учебника по этой теме, содержащих совершенно разные подходы. – wtfzn

+1

Если вы хотите использовать код режима совместимости, вы пишете традиционный RCP-код стандарта 3.x, а не e4 RCP. Есть некоторые люди, которые утверждают, что получили «гибридное» приложение для работы, но это сложно, и я не могу это посоветовать. –

+0

Невозможно написать мое приложение для e4-стиля и включить плагин 3.x, такой как .... p2.ui в этом плагине? – wtfzn

0

Глядя на вкладку «Справка/Установить новое программное обеспечение ...», представляется, что она предоставляется командой org.eclipse.equinox.p2.ui.sdk.install. Не могли бы вы просто добавить его в свой пользовательский интерфейс или trigger it programmatically, как описано в вики Eclipse?

Я не уверен, работает ли это или ожидает уровень совместимости, но стоит попробовать.