4

「Building Modular Cloud Apps with OSGi」に従おうとしています。「Creating the first OSGi application」という本の第 3 章で、著者は、bndtools を使用して Eclipse のサービスを使用して単純な OSGi アプリケーションを作成する方法について説明しています。

以下は、私のクラスと構成のスクリーンショットです。

ここに画像の説明を入力

ここに画像の説明を入力

ここに画像の説明を入力

ここに画像の説明を入力

ここに画像の説明を入力

ここに画像の説明を入力

ここに画像の説明を入力

私が直面している問題は

'!バンドルを解決できませんでした: [agenda.service.simple-0.0.1バンドルのアジェンダ.service.simple [9] の未解決の制約: 9.0 を解決できません: 要件がありません [9.0] osgi.wiring.package; (&(osgi.wiring.package=org.apache.felix.dm)(バージョン>=3.0.0)(!(バージョン>=4.0.0)))

] ! バンドルのアジェンダ.service.simple-0.0.1 の開始に失敗しました。バンドルのアジェンダ.service.simple [9] の未解決の制約の例外: 9.0 を解決できません: 要件がありません [9.0] osgi.wiring.package; (&(osgi.wiring.package=org.apache.felix.dm)(バージョン>=3.0.0)(!(バージョン>=4.0.0))) ______________'

また、gogo シェルでコマンドを発行しようとすると、正しく入力されないこともあります。しかし、最終的にバンドルのステータスは次のようになります

グ!lb gogo: CommandNotFoundException: コマンドが見つかりません: b

グ!lb gogo: CommandNotFoundException: コマンドが見つかりません: llb

グ!

グ!

グ!

グ!

グ!

グ!

lb START LEVEL 1 ID|状態|レベル|名前

0|Active     |    0|System Bundle (4.0.3)

1|Active     |    1|Apache Felix Dependency Manager (4.0.1)

2|Active     |    1|Apache Felix Dependency Manager Shell (4.0.1)

3|Active     |    1|Apache Felix Gogo Command (0.14.0)

4|Active     |    1|Apache Felix Gogo Runtime (0.10.0)

5|Active     |    1|Apache Felix Gogo Runtime (0.12.1)

6|Active     |    1|Apache Felix Gogo Shell (0.10.0)

7|Active     |    1|osgi.cmpn (5.0.0.201305092017)

8|Active     |    1|agenda.api (0.0.0.201505171119)

9|Installed  |    1|agenda.service.simple (0.0.1)
4

3 に答える 3

1

通常、これは、実行しているのとは異なるバージョンの felix に対してコンパイルすることによって発生します。

確かに、これは、Bndtools がビルドパスの依存関係に対して (指定されたバージョン範囲内の) 最低のバージョンを選択し、ランバンドルに対して (指定されたバージョン範囲内の) 最高のバージョンを選択するという事実によって引き起こされる可能性があります。

あなたの場合、範囲が指定されていないため、ビルドパスにはバージョン org.apache.felix.dependencymanager バージョン 3.1.0 が使用され、アプリケーションの実行には 4.0.1 が使用されます。

依存関係マネージャーのバージョン 4 を使用するには、buildpath エントリを次のように変更できます。

org.apache.felix.dependencymanager;version='[4,5)'

または、実行時にバージョン 3 を使用するには、-runbundles を次のように変更します。

org.apache.felix.dependencymanager;version='[3,4)',\
org.apache.felix.dependencymanager.shell;version='[3,4)',\
于 2015-05-18T19:19:43.820 に答える
1

あなたのアジェンダ.サービス.シンプル バンドルは、3.0.0 から 4.0.0 の間の org.apache.felix.dm のバージョンをエクスポートするバンドルを探していますが、Apache Felix Dependency Manager がエクスポートする 4.0.1 バージョンしか見つけられません。 .

通常、これは、実行しているのとは異なるバージョンの felix に対してコンパイルすることによって発生します。

于 2015-05-17T14:25:20.897 に答える