次のエラーメッセージが表示されます。
Java.lang.ClassCastException:weblogic.xml.jaxp.RegistryDocumentBuilderFactoryをjavax.xml.parsers.DocumentBuilderFactoryにキャストできません
私はこれを研究しているいくつかのフォーラムを通過しました。彼らはxml-apis.jar
を削除するか、JARファイルが競合していると言いました。しかし、提案されたすべての手順を実行しても、同じエラーが発生します。
それは常にxml-apis.jar
。それらをクラスパスから削除します(たとえば、webappのWEB-INF/libから削除します)。
Xml-beans-1.xb2をlibディレクトリに削除します。次のjarファイルが含まれないようにPOMを変更しました。
<dependency>
<groupId>xml-apis</groupId>
<artifactId>xml-apis</artifactId>
<version>1.0.b2</version>
<scope>provided</scope>
</dependency>
この問題の理由は、ライブラリに同じクラス名のjarが複数あるためです。 WEB-INF/libに移動し、xml-apis-1.0.b2.jarとstax-api-1.0.1.jarを削除するか、pom.xml自体からそれらを削除します。
バナンは正しいと思います。フォーラム http://forum.springsource.org/showthread.php?t=22597 同様の問題の解決策について説明しています。
通常、このような問題は、クラスパスに同じクラスのバージョンが複数あり、それらのバージョンが異なるクラスローダーによってロードされている場合に発生します。 DocumentBuilderFactoryの1つのバージョンは、システムクラスローダーによってロードされ、もう1つのバージョンはエンタープライズアプリケーションのクラスローダーによってロードされました。 XMLパーサーを呼び出すときは、親のバージョンのクラスが使用されます。あなたがキャストしているとき、あなたのプライベートバージョンが利用されます。これらのバージョンには互換性がないため、ClassCastExceptionが発生します。
他の誰かが私と同じ状況にある場合に備えて、この質問に対する以前の回答に少し追加したいと思いました。 CXF 2.2.3を使用しているため、WebLogic9.2サーバーでも同じ問題が発生しました。前述のxml-apis.jarの削除に加えて、xmlParserAPIsライブラリも削除する必要がありました。
Maven2を使用しているので、別のインクルージョンを追加するだけで済みました。
<!-- CXF -->
<dependency>
<groupId>org.Apache.cxf</groupId>
<artifactId>cxf-bundle</artifactId>
<version>${dependency.version.cxf}</version>
<scope>compile</scope>
<exclusions>
<exclusion>
<artifactId>xml-apis</artifactId>
<groupId>xml-apis</groupId>
</exclusion>
<exclusion>
<artifactId>xercesImpl</artifactId>
<groupId>xerces</groupId>
</exclusion>
<exclusion>
<artifactId>xmlbeans</artifactId>
<groupId>org.Apache.xmlbeans</groupId>
</exclusion>
<exclusion>
<artifactId>xmlParserAPIs</artifactId>
<groupId>xerces</groupId>
</exclusion>
</exclusions>
</dependency>
これが誰かを助けることを願っています!
私たちもそのような問題を抱えています。エラーの理由はgwtライブラリにありました。レシピ:すべてのgwtクライアントライブラリをdistrから除外します。
私の場合、xml-apisライブラリを削除し、XML処理ライブラリをアップグレードすることでこの問題を解決することができました。
org.Apache.xmlbeans/xmlbeans/2.4.0
から
org.Apache.xmlbeans/xmlbeans/2.6.0
に
参考までに、私はWeblogic10.3.6.0を使用しています。