4

私はOSGIの初心者です。次のチュートリアルに従って、Eclipse で単純な Hello World OSGI バンドルを作成しました。 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....

これを修正するのを手伝ってもらえますか? ありがとうございました。

4

5 に答える 5

8
于 2014-01-28T12:17:18.057 に答える
0

私はこれとまったく同じ問題を抱えていました。新しい実行構成を作成し、すべてのバンドルの選択を解除し、バンドルを追加してから、必要なバンドルを追加をクリックすることで、バンドルを実行することができました。

この 2 番目の実行構成が機能し、最初の実行構成が機能しない理由がわかりません。両方の .launch ファイルを確認しましたが、それらは同一です。

起こっているように見えるのは、GUI で 3 つしか選択されていないにもかかわらず、1 つの実行構成が使用可能なすべてのバンドルを実行していることです。すべてのエラーが終了したら osgi コンソールで ss コマンドを入力すると、壊れた起動構成に対して 1182 のバンドルが起動されますが、動作中の構成では正しい 3 が返されます。

新しい起動構成を作成して、それがソートされるかどうかを確認する必要があります。なぜ新しい構成が機能するのかわかりませんが、うまくいきました。これが役立つことを願っています。

作業構成 ss の出力:

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

壊れた構成 ss の最後の数行:

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
于 2013-07-23T08:21:28.660 に答える