4 つのバンドルを定義しました。
bundle 1 : export package x version 1
bundle 2 : import package x ver [1,2] and export package y;y uses x
bundle 3 : export package x version 2
bundle 4 : import package y and also import package x version 2
apache felix (配布可能なバイナリ) を使用して、バンドル 3 を開始する前に、バンドル 1 を解決 (または開始) しないように手動で強制する必要があることがわかりました (そうしないと、バンドル 2 がパッケージ x バージョン 1 を使用するため、使用制約の問題が発生します)バンドル 4 では、パッケージ x バージョン 1 およびバージョン 2 が表示されます --> 制約違反を使用します)。
これらの投稿の著者に感謝します:
http://njbartlett.name/2011/02/09/uses-constraints.html
http://blog.springsource.com/2008/10/20/understanding-the-osgi-uses -指令/
バンドルに順序を課すのは好きではありません。すべてのバンドルを /bundle ディレクトリにコピーしてから、フレームワークのインスタンスをインストールして起動する必要があります。Apache felix はバンドルをアルファベット順に並べ替えてインストールすることに気付きました (したがって、バンドル 1 がインストールされ、最初に開始されます)。Apache karaf を試してみました。バンドルを /deploy にコピーしたところ、問題が解消されたことがわかりました。質問は次のとおりです。
Apache Karaf (または felix ファイルのインストール) は、この種の問題を回避するために、バンドルを開始する順序を課す戦略を適用しますか?