5

Oracle 10g を含む多くのアプリケーション サーバーにデプロイできる Web アプリケーションがあります。ただし、そのプラットフォームでは、クラスパスの問題があります。webapp は JAXB 2 を使用していますが、Oracle 10g は JAXB 1 で出荷されており、これがエラーの原因でした。これらを回避するために、Web アプリケーションでクラスを優先するように Oracle を構成しましたが、JAXB コンテキストをインスタンス化しようとすると、上記のエラーが発生します。

「ローダー制約違反」例外を調べます。あるクラスローダーでロードされたクラスが、同じパッケージ内のパッケージプライベートであるが別のクラスローダーによってロードされたものにアクセスしようとすると、スローされるようです。javax.xml.namespace.QName を含む webapp 内のすべての jar を削除しようとしましたが、ピックアップされているのは Oracle に含まれているインスタンスであることを確認しましたが、それでもエラーが発生します。何か案は?

(これは、10g と JAXB 2 に関する以前の質問の続きです。)

4

4 に答える 4

3

このクラスは、世に出回っている WS Java ライブラリの半分です。複数のクラスローダからロードして後でそれらを比較して、LinkageError を発生させるのは非常に簡単です。

これを追跡するための効果的な (しかし大ハンマー) 手法の 1 つは、Java ソースから Classloader を変更して、ロード時にこの特定のクラスがどの jar からロードされているかをダンプし、変更したバージョンを bootclasspath の先頭に追加することです。

-Xbootclasspath/p:/path/to/hackedBin

于 2008-09-25T17:27:16.423 に答える
1

Java のどのバージョンを使用していますか? 最新バージョンは、このクラスが rt.jar に含まれています。

于 2008-09-25T15:30:40.917 に答える
0

まったく関係がないかもしれませんが、Weblogicがまったく同じクラスで抱えていた問題を覚えています。問題の理由は、クラスのシリアルIDが変更されたことです(Sunが誤って変更しました)。回避策は、JVMに-Dcom.sun.xml.namespace.QName.useCompatibleSerialVersionUID=1.0を提供することでした。

それは同じ問題である可能性がありますが、誤って報告されていますか?それを試してみてください。

ここを参照してください:http://forums.bea.com/thread.jspa?threadID = 600014563

于 2008-09-25T16:13:38.753 に答える
0

libアプリサーバーのフォルダーの下にある JAXB jar を更新できますか?

于 2008-10-22T16:37:45.750 に答える