OSGi フラグメントを追加して、ホスト OSGi バンドル内の特定のリソースを置き換えたいと考えています。
私が理解しているように、OSGi フラグメントに含まれるリソースは、ホスト バンドルのクラスパスに追加されるだけです。フラグメントがホスト バンドルに既に存在するリソースを追加している場合、フラグメントのリソースが読み込まれるという保証はありません。それはホスト バージョンのままである可能性もあります。
リソースのフラグメント バージョンがホスト バージョンの代わりにロードされることを確認するために、 http: //wiki.osgi.org/wiki/Fragment は、Bundle-ClassPath ヘッダーを使用してリソースを「最初」として指定することが可能であると述べています。 (好ましい)。
例として patch.jar を示します。
Bundle-ClassPath: patch.jar,.
そこで述べたように、「patch.jar は '.' よりも進んでいるため ホストではなくフラグメントからクラスを優先的にロードできるようになります。」
この手法を使用することもできますが、これは、まずフラグメント リソースを別の jar にバンドルしてから、この jar をフラグメント バンドルに含める必要があることを意味します。
フラグメントにjarを含めることなく、ホストではなくフラグメントからクラス/リソースを優先的にロードする方法はありますか?