0

osgiでopenorbを使用すると、次の例外が発生します。
openorb-1.3.1.jarとjdk1.6を使用しています。
jdkのopenorb-1.3.1.jarとrt.jarの両方に多くの重複が含まれているため、問題が発生していると思います。
たとえば、org.omg.CORBA.ORBクラスがrt.jarとopenorb-1.3.1.jarの両方にあるため、次のエラーが発生しています。
問題を解決する正しい方法を提案してください。

例外は、のようなものです。

java.lang.LinkageError:ローダー制約違反:ローダー(java.lang.ClassLoader.findBootstrapClass...で「org/ omg / CORBA/ORB」という名前の別のタイプに対して以前に開始されたロードのインスタンス。

4

2 に答える 2

1

おそらくopenorbはパッケージの独自の内部コピーを使用してorg.omg.CORBAいますが、独自のバンドル(何らかの方法でopenorbを呼び出していると思われますorg.omg.CORBA)はシステムバンドルからインポートされています(つまり、rt.jarからのものを取得しています)。

これ以上の情報がなければ、単一の治療法を処方することは困難ですが、原則として、openorb と他のすべてのバンドルorg.omg.CORBAが同じ場所から読み込まれるようにすることです。つまり、次のいずれかです。

  • openorb は、そのパッケージを独自の内部コピーではなく rt.jar から取得できるようorg.omg.CORBAに、ヘッダーに含める必要があります。Import-Packageまた...
  • あなたのバンドルはorg.omg.CORBAopenorbによってエクスポートされたのコピーをインポートする必要があります...うまくいけば、バンドルが言うことができるように、たとえば1.0.0のバージョンでエクスポートされますImport-Package: org.omg.CORBA;version="[1.0.0,2.0.0)"
于 2011-06-28T00:04:29.733 に答える
0

OSGi コンテナーとして karaf を使用している場合。/karaf/etc にある karaf "jre.properties" を編集できます。すでにopenorbにあるパッケージを削除します

于 2013-12-06T07:07:59.230 に答える