FrameworkEvent ОШИБКА при запуске Hello World OSGI Bundle

Я новичок в ОСГИ. Я следовал следующему уроку, чтобы создать простой пакет OSGI Hello World в Eclipse. http://www.javaworld.com/javaworld/jw-03-2008/jw-03-osgi1.html?page=2

При запуске проекта я получаю кучу ошибок в консоли. Ниже приведены эти ошибки:

osgi> !SESSION 2013-07-10 23:23:03.340 -----------------------------------------------
eclipse.buildId=unknown
java.version=1.7.0_07
java.vendor=Oracle Corporation
BootLoader constants: OS=win32, ARCH=x86, WS=win32, NL=en_US
Command-line arguments:  -dev file:C:/Users/student/workspace/.metadata/.plugins/org.eclipse.pde.core/OSGi Framework/dev.properties -os win32 -ws win32 -arch x86 -consoleLog -console

!ENTRY org.eclipse.debug.ui 4 0 2013-07-10 23:23:08.809
!MESSAGE FrameworkEvent ERROR
!STACK 0
org.osgi.framework.BundleException: Exception in org.eclipse.debug.internal.ui.DebugUIPlugin.start() of bundle org.eclipse.debug.ui.
    at org.eclipse.osgi.framework.internal.core.BundleContextImpl.startActivator(BundleContextImpl.java:734)
    at org.eclipse.osgi.framework.internal.core.BundleContextImpl.start(BundleContextImpl.java:683)
    at org.eclipse.osgi.framework.internal.core.BundleHost.startWorker(BundleHost.java:381)
    at org.eclipse.osgi.framework.internal.core.AbstractBundle.resume(AbstractBundle.java:390)
    at org.eclipse.osgi.framework.internal.core.Framework.resumeBundle(Framework.java:1177)
    at org.eclipse.osgi.framework.internal.core.StartLevelManager.resumeBundles(StartLevelManager.java:559)
    at org.eclipse.osgi.framework.internal.core.StartLevelManager.resumeBundles(StartLevelManager.java:544)
    at org.eclipse.osgi.framework.internal.core.StartLevelManager.incFWSL(StartLevelManager.java:457)
    at org.eclipse.osgi.framework.internal.core.StartLevelManager.doSetStartLevel(StartLevelManager.java:243)
    at org.eclipse.osgi.framework.internal.core.StartLevelManager.dispatchEvent(StartLevelManager.java:438)
    at org.eclipse.osgi.framework.internal.core.StartLevelManager.dispatchEvent(StartLevelManager.java:1)
    at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230)
    at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.run(EventManager.java:340)
Caused by: java.lang.IllegalStateException: Workbench has not been created yet.
    at org.eclipse.ui.PlatformUI.getWorkbench(PlatformUI.java:92)
    at org.eclipse.debug.internal.ui.contextlaunching.LaunchingResourceManager.startup(LaunchingResourceManager.java:546)
    at org.eclipse.debug.internal.ui.DebugUIPlugin.getLaunchingResourceManager(DebugUIPlugin.java:357)
    at org.eclipse.debug.internal.ui.DebugUIPlugin.start(DebugUIPlugin.java:569)
    at org.eclipse.osgi.framework.internal.core.BundleContextImpl$1.run(BundleContextImpl.java:711)
    at java.security.AccessController.doPrivileged(Native Method)
    at org.eclipse.osgi.framework.internal.core.BundleContextImpl.startActivator(BundleContextImpl.java:702)
    ... 12 more
Root exception:
java.lang.IllegalStateException: Workbench has not been created yet.
    at org.eclipse.ui.PlatformUI.getWorkbench(PlatformUI.java:92)
    at org.eclipse.debug.internal.ui.contextlaunching.LaunchingResourceManager.startup(LaunchingResourceManager.java:546)
    at org.eclipse.debug.internal.ui.DebugUIPlugin.getLaunchingResourceManager(DebugUIPlugin.java:357)
    at org.eclipse.debug.internal.ui.DebugUIPlugin.start(DebugUIPlugin.java:569)
    at org.eclipse.osgi.framework.internal.core.BundleContextImpl$1.run(BundleContextImpl.java:711)
    at java.security.AccessController.doPrivileged(Native Method)
    at org.eclipse.osgi.framework.internal.core.BundleContextImpl.startActivator(BundleContextImpl.java:702)
    at org.eclipse.osgi.framework.internal.core.BundleContextImpl.start(BundleContextImpl.java:683)
    at org.eclipse.osgi.framework.internal.core.BundleHost.startWorker(BundleHost.java:381)
    at org.eclipse.osgi.framework.internal.core.AbstractBundle.resume(AbstractBundle.java:390)
    at org.eclipse.osgi.framework.internal.core.Framework.resumeBundle(Framework.java:1177)
    at org.eclipse.osgi.framework.internal.core.StartLevelManager.resumeBundles(StartLevelManager.java:559)
    at org.eclipse.osgi.framework.internal.core.StartLevelManager.resumeBundles(StartLevelManager.java:544)
    at org.eclipse.osgi.framework.internal.core.StartLevelManager.incFWSL(StartLevelManager.java:457)
    at org.eclipse.osgi.framework.internal.core.StartLevelManager.doSetStartLevel(StartLevelManager.java:243)
    at org.eclipse.osgi.framework.internal.core.StartLevelManager.dispatchEvent(StartLevelManager.java:438)
    at org.eclipse.osgi.framework.internal.core.StartLevelManager.dispatchEvent(StartLevelManager.java:1)
    at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230)
    at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.run(EventManager.java:340)

!ENTRY org.eclipse.equinox.p2.core 4 0 2013-07-10 23:23:10.114
!MESSAGE Provisioning exception
!STACK 1
and other similar errors....

Можете ли вы помочь мне исправить это? Спасибо.

5 ответов

Я много боролся за "Верстак еще не создан" весь день.

Но я получил решение следующими шагами.

  1. Перейдите в конфигурацию "Выполнить" -> Удалить все фляги целевой платформы.
  2. Нажмите на добавить необходимые пакеты.
  3. Проверьте org.apache.felix.gogo.runtime, org.apache.felix.gogo.shell, org.eclipse.eqinox.console, org.eclipse.osgi и ваш файл jar.
  4. Последний и важный шаг. Перейдите в Настройки- > установите флажок "Очистить область конфигурации перед запуском ".
  5. Запустите приложение OSGi сейчас.
  6. Наслаждайся, если это работает для тебя, как это работает для меня.

Спасибо

Я опоздал на вечеринку, но столкнулся с той же самой проблемой, пытаясь создать Hello World из учебника javaworld, используя eclipse 4.2.

Когда я отменил выбор всех пакетов в целевой платформе и нажал "Добавить необходимые пакеты", затмение только выбрано

org.eclipse.osgi

После запуска я получил ошибку

org.osgi.framework.BundleException: Could not find bundle: org.eclipse.equinox.console

Добавление консоли и нажатие кнопки "Добавить необходимые комплекты"

javax.servlet
org.apache.felix.gogo.runtime
org.eclipse.osgi.services

вместе с org.eclipse.osgi

Запуск этой конфигурации привел к

org.osgi.framework.BundleException: Missing required bundle: org.apache.felix.gogo.shell

Наконец, добавив

org.apache.felix.gogo.shell

получил меня, что я ожидал.

Hello World!!
osgi> ss
"Framework is launched."


id  State       Bundle
0   ACTIVE      org.eclipse.osgi_3.9.0.v20130529-1710
1   ACTIVE      com.javaworld.sample.HelloWorld_1.0.0.qualifier
8   ACTIVE      org.apache.felix.gogo.runtime_0.10.0.v201209301036
9   ACTIVE      org.eclipse.equinox.console_1.0.100.v20130429-0953
10  ACTIVE      javax.servlet_3.0.0.v201112011016
11  ACTIVE      org.eclipse.osgi.services_3.3.100.v20130513-1956
12  ACTIVE      org.apache.felix.gogo.shell_0.10.0.v201212101605
osgi> 

Ошибка возникает, когда вы запускаете ненужные пакеты с целевой платформы. Поэтому выбираются только необходимые комплекты.

Просто, при настройке конфигурации запуска, выполните следующие шаги:

  1. На вкладке "Связки" сначала нажмите "Отменить выбор". Это отменит все пакеты из вашей рабочей области, а также из целевой платформы.
  2. Теперь на той же вкладке, в древовидной структуре рабочей области, выберите свой созданный пакет. После этого нажмите "Добавить необходимые комплекты". Это добавит необходимые пакеты с целевой платформы. Также вы можете проверить, удовлетворены ли все зависимости, нажав "Validate Bundles".
  3. Теперь сохраните конфигурацию и запустите. Ваш пакет будет запущен, а все остальные мешающие пакеты будут пропущены.

У меня была точно такая же проблема. Мне удалось запустить свой пакет, создав новую конфигурацию запуска и отменив выбор всех пакетов, добавив свой пакет и нажав "Добавить необходимые пакеты".

Я не знаю, почему конфигурация второго запуска работает, а первая - нет, я посмотрел оба файла.launch, и они идентичны.

Кажется, что происходит то, что одна конфигурация запуска запускает все доступные пакеты, хотя в графическом интерфейсе выбраны только три. Если вы введете команду ss в консоли osgi, как только все ошибки будут устранены, я получу 1182 пакета для неработающей конфигурации запуска, где в качестве рабочей конфигурации просто выдает правильные 3.

Вы должны попытаться создать новую конфигурацию запуска и посмотреть, разбирается ли она, я не знаю, почему новая работает для меня, но это помогло, надеюсь, это поможет.

Вывод рабочего конфига сс:

id      State       Bundle
0       ACTIVE      org.eclipse.osgi_3.7.2.dist
                    Fragments=1
1       RESOLVED    javax.transaction_1.1.1.v201105210645
                    Master=0
2       ACTIVE      com.javaworld.sample.HelloWorld_1.0.0.qualifier

Последние несколько строк ломаного конфига сс:

1040    ACTIVE      org.sonatype.m2e.mavenarchiver_0.15.0.201212080009
1041    ACTIVE      org.testng.eclipse_6.8.0.20121120_1820
1042    ACTIVE      org.uddi4j_2.0.5.v200805270300
1043    ACTIVE      org.w3c.css.sac_1.3.0.v200805290154
1044    ACTIVE      org.w3c.dom.smil_1.0.0.v200806040011
1045    ACTIVE      org.w3c.dom.svg_1.1.0.v201011041433
1046    ACTIVE      org.w3c.sac_1.3.0.v20120213
1155    <<LAZY>>    org.eclipse.equinox.simpleconfigurator_1.0.200.dist
1182    <<LAZY>>    org.eclipse.equinox.initializer_1.0.0.dist

Установка android:targetSdkVersion="19 решила проблему за меня.

Другие вопросы по тегам