4

私はEclipse プラグインを開発しており、通常の jarライブラリを同等のOSGi bundleに置き換えようとしています。Apache Felix maven-bundle-plugin を使用して jar ファイルをビルドし、それを OSGi バンドルに変換します。pom.xml<Export-Package>で、プラグインに必要なパッケージを定義しuses、パッケージを含むライブラリに含まれるすべてのパッケージ (依存関係)として定義します。プラグインのクラスパスでライブラリを使用していたとき、プラグインを正常に実行できました。ライブラリから作成した OSGi バンドルからパッケージをインポートすると、次のエラーが発生します。javax.xml.namespace<Embed-Dependency>javax.xml.namespace

java.lang.LinkageError: loader constraint violation: loader (instance of org/eclipse/osgi/internal/loader/EquinoxClassLoader) previously initiated loading for a different type with name "javax/xml/namespace/QName"

クラスの 2 つの異なるバージョンがインスタンス化されているようですQName(1 つはプラグインから、もう 1 つはライブラリから?) が、ライブラリとプラグインの両方でこのクラスが必要です。javax.xml.namespace パッケージをバンドルからプラグインにインポートしようとしましたが、これは役に立ちませんでした。また、クラスをインポートしないプラグインの別のクラスにライブラリに関連するコードを移動しようとしましたQNameが、これは何かを変更しませんでした。難しい問題のようです。MANIFEST.MFまたはバンドルの組み込みパッケージで何かを変更する必要がありますか、それともプラグインのインポートされたパッケージで何かを変更する必要がありますか? どんな助けでも大歓迎です。

4

0 に答える 0