FrameworkEvent ERROR运行Hello World OSGI Bundle

Tra*_*man 4 osgi eclipse-plugin osgi-bundle

我是OSGI的初学者.我按照以下教程在eclipse中做了一个简单的Hello World OSGI Bundle. 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....
Run Code Online (Sandbox Code Playgroud)

你能帮我解决这个问题吗?谢谢.

小智 6

我迟到了,但我遇到了同样的问题,尝试使用eclipse 4.2从javaworld教程创建Hello World.

当我取消选择目标平台中的所有包并按下"添加必需的包"时,仅选择了eclipse

org.eclipse.osgi
Run Code Online (Sandbox Code Playgroud)

运行后,我得到了错误

org.osgi.framework.BundleException: Could not find bundle: org.eclipse.equinox.console
Run Code Online (Sandbox Code Playgroud)

添加控制台并按"添加必需的捆绑包"添加

javax.servlet
org.apache.felix.gogo.runtime
org.eclipse.osgi.services
Run Code Online (Sandbox Code Playgroud)

与org.eclipse.osgi一起

运行此配置导致

org.osgi.framework.BundleException: Missing required bundle: org.apache.felix.gogo.shell
Run Code Online (Sandbox Code Playgroud)

最后,加入

org.apache.felix.gogo.shell
Run Code Online (Sandbox Code Playgroud)

得到了我的预期.

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> 
Run Code Online (Sandbox Code Playgroud)


小智 6

我为"完成工作台尚未创建"做了很多努力.

但我通过以下步骤得到了解决方案 .-

  1. 转到运行配置 - >删除所有目标平台jar.
  2. 单击"添加所需的包".
  3. 检查org.apache.felix.gogo.runtime,org.apache.felix.gogo.shell,org.eclipse.eqinox.console,org.eclipse.osgi和您的jar文件.
  4. 最后也是重要的一步.转到设置 - > 选中"启动前清除配置区域"复选框.
  5. 立即运行OSGi应用程序.
  6. 享受它是否适合您,因为它对我有用.

谢谢