OSGi は初めてで、Equinox を使用しています。私はいくつかの検索を行いましたが、これに対する答えが見つかりません。OSGIでのディスカッション- バンドルに必要なサード パーティの JAR の処理は多少役立ちますが、私の質問には完全には答えていません。
OSGi バンドルとして既にパッケージ化されている jar ファイルを取得しましたrabbitmq-client.jar
(その MANIFEST.MF に Bundle-Name などのプロパティが含まれています)。これをバンドルとしてインストールしたいと考えています。この jar はパッケージorg.apache.commons.io
をインポートしorg.apache.commons.io.input
、commons-io-1.2.jar
. RabbitMQ クライアント 2.7.1 ディストリビューションには も含まれcommons-cli-1.1.jar
ているため、これも必要であると推測されます。
これらのコモンズ jar のマニフェストを調べたところ、それらがバンドルとしてパッケージ化されていないようであることがわかりました。つまり、それらのマニフェストには、標準のバンドル プロパティがありません。
私の具体的な質問は次のとおりです。rabbitmq-client.jar
バンドルとしてインストールする場合、コモンズ jar からインポートする必要があるパッケージにアクセスする適切な方法は何ですか? 再構築せずに考えられる代替案は 3 つだけrabbitmq-client.jar
です。
- commons jar のパッケージは、すでに Equinox グローバル クラスパスに含まれており、
rabbitmq-client.jar
そこから自動的に取得されます。 - 2 つの commons jar を含む別のバンドルを作成し、必要なパッケージをエクスポートして、そのバンドルを Equinox にインストールする必要があります。
- Equinox を起動するときに、これら 2 つの Commons jar をグローバル クラスパスに配置する必要が
rabbitmq-client.jar
あります。
通常、OSGi コンテナではグローバル クラスパスを使用しないと読みました。個々のバンドル クラスパスを構築するときに、グローバル クラスパスのアイテムを使用できるかどうかについては明確ではありません。ただし、rabbitmq-client.jar
などの他のパッケージもインポートすることに注意してくださいjavax.net
。これは、グローバルクラスパスからのものと思われます。または、それらをエクスポートする他のバンドルがありますか?
ご協力ありがとうございます。