1

バンドルのリソースを他のバンドル (ただし、1 つだけではない) と共有するにはどうすればよいですか? たとえば、画像やプロパティ ファイルをすべてのバンドルに複製するのではなく、1 つの場所からアクセスしたいと考えています。

Fragment-Host を使用しようとしましたが、複数のバンドルを指定することはできません (少なくとも方法はわかりません)。

   <!-rest of the pom--> 
   <instructions>
       <Fragment-Host>
          com.bundlehost
       </Fragment-Host>
    </instructions>
4

3 に答える 3

2

Dmytro が指摘しているように、OSGi API メソッドを使用して、任意のバンドル内のリソースにアクセスできます。ただし、より難しい問題は次のとおりです。どのバンドルからこれらのリソースにアクセスするか、およびそれらがバンドル内のどこにあるかをどのように知ることができますか?

仮説を立てたり、答えをハードコーディングしたりするだけでは、システムが非常に脆弱になり、バンドル間に隠れた結合ができてしまいます。その後、誰かがあなたのバンドルをアプリケーションにデプロイしたが、リソース バンドルが含まれていないと、すべてが壊れてしまいます。これは、モジュール性のポイントを無効にします。

于 2013-09-06T19:38:41.490 に答える
1

Bundle.getEntryPaths()およびBundle.getEntry()を使用してバンドル リソースを取得できます。コンテンツを読むにはURL.openStream()を使用します

于 2013-09-06T11:16:08.110 に答える