Проблема запуска приложения Eclipse Workbench - PullRequest
1 голос
/ 16 сентября 2010

Я создал один плагин приложения Workbench, а не Rcl-приложение Eclipse.Я не создал ни одного шаблона плагина для этого приложения рабочей среды.Теперь при запуске верстака приложение Activator не вызывает.Я помещаю System.out.println ("Insided start ()") в метод запуска Activator.java .Но это не вызов метода запуска.Как мне сделать вызов метода запуска?Но когда я делаю опцию, Autostart = true в конфигурации запуска, плагины, он запускает активатор.Но проблема в том, что когда я вызываю IWorkbenchWindow window = Workbench.getInstance (). GetActiveWorkbenchWindow (); Он выдает сообщение об ошибке, в котором говорится, что не удалось создать окно рабочей среды.Это сообщение об ошибке выдает только тогда, когда я сделаю этот плагин как AutoStart = true.В чем может быть проблема?


Ниже приведено сообщение об ошибке, которое я получаю .. Когда я использую

IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow();

java.lang.IllegalStateException: рабочая среда еще не была создана,в org.eclipse.ui.PlatformUI.getWorkbench (PlatformUI.java:92) в myworkbenchplugin.Activator.custom (Activator.java:43) в myworkbenchplugin.Activator.start (Activator.java:36) в org.eclipse.os.framework.internal.core.BundleContextImpl $ 1.run (BundleContextImpl.java:783) в java.security.AccessController.doPrivileged (собственный метод) в org.eclipse.osgi.framework.internal.core.BundleContextImplava.Indl.jpg774) на org.eclipse.osgi.framework.internal.core.BundleContextImpl.start (BundleContextImpl.java:755) на org.eclipse.osgi.framework.internal.core.BundleHost.startWorker (BundleHost.java3): 3.eclipse.osgi.framework.internal.core.AbstractBundle.resume (AbstractBundle.java:374) в org.eclipse.osgi.framework.internal.core.Framework.resumeBundle (Framework.java:1067) в org.eclipse.osgi.framework.internal.core.StartLevelManager.resumeBundles (StartLevelManager.java:561) в org.eclipse.osgi.framework.internal.core.StartLevelManager.resumeBundles (StartLevelManager.java: 546) на org.eclipse.osgi.framework.internal.core.StartLevelManager.incFWSL (StartLevelManager.java:459) на org.eclipse.osgi.framework.internal.core.StartLevelManager.doSetStjeanLanв org.eclipse.osgi.framework.internal.core.StartLevelManager.dispatchEvent (StartLevelManager.java:440) в org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent (EventManager.java.ecgi) 22).framework.eventmgr.EventManager $ EventThread.run (EventManager.java:337)

Ответы [ 2 ]

1 голос
/ 04 марта 2011

Если вы запустите свой плагин при запуске Eclipse, Activator.start () будет вызван до полного запуска рабочей среды.Вам нужно вставить код в UIJob / WorkbenchJob в Activator, чтобы он вызывался после того, как окна рабочего места готовы.

1 голос
/ 16 сентября 2010

Как вы уже видели, вам нужно управлять манифестом пакета OSGi , чтобы указать правильную политику активации.Обратите внимание, что:

Заголовки Eclipse-AutoStart и Eclipse-LazyStart устарели в Eclipse 3.4.
Начиная со спецификации OSGi R4.1, политика отложенной активации была принята OSGiСпецификация.Новый заголовок манифеста пакета OSGi Bundle-ActivationPolicy можно использовать для указания политики отложенной активации.

Equinox Framework версии 3.4 или более поздней будет продолжать поддерживать устаревшие Eclipse-LazyStart и Eclipse-AutoStart headers.
Разработчикам пакетов, которые хотят, чтобы их пакеты работали в других реализациях OSGi Framework, следует добавить заголовок Bundle-ActivationPolicy в свой манифест.В большинстве случаев вы можете просто добавить следующий заголовок:

Bundle-ActivationPolicy: lazy

См. OSGi LazyStart design .В вашем случае вы можете попробовать Bundle-ActivationPolicy: lazy;exclude:="yourPluginId", если хотите убедиться, что ваш плагин запускается независимо от того, что.

Для получения Active WorkbenchWindow вы можете использовать PlatformUI.getWorkbench().getActiveWorkbenchWindow(), как подробно описано в Какполучить имя проекта в Eclipse? .

...