0

私は OSGI 開発の初心者であり、依存する JAR を処理する最善の方法を理解するのに苦労しています。

つまり、バンドルを作成する場合、いくつかのサードパーティ JAR を使用する必要がある可能性があります。OSGI にデプロイするバンドル JAR を作成すると、明らかにこれらのサードパーティ JAR が含まれていないため、バンドルは実行されません。

これらの JAR をバンドルに変換し、OSGI コンテナーにデプロイすることが 1 つのオプションであることは理解しています。サードパーティの jar をバンドルして展開しようとすると、独自の依存 jar に対してエラーがスローされ、これらの依存関係は無限であり、実現できません。

これに対する最善の解決策は何ですか?

-- アヌラグ

4

4 に答える 4

0

最後に、サードパーティの jar 問題を解決しました。実際には、POM.xml ファイル <_exportcontents>* に次のタグを追加するために偽造しました。

私の問題は解決しました。皆さんのサポートと貴重な手がかりに感謝します。

于 2013-10-11T04:54:39.347 に答える
0

あなたが osgi の初心者である場合、大きなライブラリを自分でバンドルすることはお勧めしません。多くの場合、いくつかのインポートおよびエクスポート ヘッダーを定義するだけでは不十分であり、非常に困難になる可能性があります。幸いなことに、多くのライブラリがバンドルとして利用できます。

元のロブがまだバンドルになっていない場合は、maven central で servicemix バンドルからバンドルされたバージョンを検索できます。

apache karaf を使用することも大きな助けになることがよくあります。activemq、cxf、camel、openjpa などの多くのライブラリ用に事前定義された deps を持つ karaf 機能があります。

最悪の場合、lib とすべての dep を独自の jar に埋め込むことができます。ただし、バンドル間で一部のクラスを共有しようとすると、クラスのロードの問題が発生する傾向があります。

あなたの場合、どのlibが問題ですか?

于 2013-10-05T22:38:36.913 に答える
0

次の 3 つの選択肢があります。

  1. いくつかの既成のバンドル ( Springsource RepositoryEclipse Orbit Repositoryなど)でライブラリを見つけます。
  2. ライブラリを外部ライブラリとしてバンドルに含めます (ディレクトリ lib を作成し、そこに jar ファイルをコピーして、Bundle-Classpath要素からそれらを参照しますMANIFEST.MF) 。
  3. ライブラリを OSGi バンドルに変換します (例:bnd wrapコンバーターを使用、例はこちら)
于 2013-10-08T07:21:43.267 に答える