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