コードからApacheFelixを起動し、独自のバンドルを登録することに成功しました。
OSGIプロジェクト間の次の関係が必要です。
[OsgiInterface]--インターフェイスを提供します。
[OsgiModuleA]--(バンドル)は、これらのインターフェースの実装を提供します。
知っている[OsgiInterface]
[OsgiUsage]--1つ以上のバンドルを利用します。
知っている[OsgiInterface]と[OsgiModuleA]
現在、インターフェースを実装するサービスの登録に問題があります。manifest.mfファイルのエントリが間違っていると思います。
追加情報
誰かが私の前の質問のコードを見ることができれば、それはとても親切です
この質問を参照させてください:
パッケージにインターフェイスを提供する3番目のプロジェクトOsgiInterfacesを作成しようとしました。このプロジェクトは、OsgiModuleAとOsgiUsageの両方で知られています。SomeInterfaceinterfaces
OsgiModuleA: エントリにmanifest.mf追加の値が追加されました。さらに、アクティベーターに提供されるインスタンスがあります。interfacesImport-Package:SomeInterface
バンドルが開始されると、次のことNoClassDefFoundErrorが発生します。インターフェースSomeInterfaceが不明です。
編集:
これで、エラーが修正されたので、最も重要な部分は次のとおりでした。
map.put(Constants.FRAMEWORK_SYSTEMPACKAGES_EXTRA,
"my.interfaces; version=1.0.0");
これがなければ、私は得ClassCastExceptionました。