私はOSGiセットアップにmavenを持っています。 親バンドルのpom.xmlは、JAR B(バージョン1)に依存しているJAR Aに依存しています。 親には2つの子バンドルがあります。子バンドル1は、バージョン1のJAR Bを使用します。 子バンドル2では、バージョン2のJAR Bが必要です。 JARは下位互換性がありません。したがって、JAR Bのバージョンを1から2にアップグレードすることはできません。 バンドル1でJARのバージョン1を使用し、バンドル2で同じJARのバージョン2を使用する必要があります。OSGiの2つのバンドルで同じJARの2つのバージョンを使用するにはどうすればよいですか?
現時点では、2つのバージョンを使用しているため、NoClassDefFoundエラーのためにバンドルのいずれかが失敗するクラスローディングでエラーが発生します。
OSGiを使用してこの依存関係を解決する方法を教えてください。
これまでは、あなたのMavenセットアップについてしか説明していませんでした。 OSGiではこれはあまり関係ありません。OSGiの実行時には、マニフェストに含まれるImport-PackageとExport-Packageのステートメントが重要です。あなたの質問にこれを追加できますか?別物。バンドルのマニフェストはどのように作成しますか? –
@ChristianSchneider両方のバンドルのImport-PackageとExport-PackageにJAR Bに関する情報を追加していません。しかし、バンドル2のRequire-Bundleプロパティに 'bundle 1'を追加しました。これは何かに影響しますか? – user2458672
Require-Bundleは使用しないでください。代わりに、maven-bundle-pluginまたはbnd-maven-pluginを介してbndを実行して、マニフェストの書き込みを行います。 gjoranv提案のような依存関係を埋め込むことも可能です。 –