web-dev-qa-db-ja.com

WebLogicでXMLを解析する際のClassCastException

次のエラーメッセージが表示されます。

Java.lang.ClassCastException:weblogic.xml.jaxp.RegistryDocumentBuilderFactoryをjavax.xml.parsers.DocumentBuilderFactoryにキャストできません

私はこれを研究しているいくつかのフォーラムを通過しました。彼らはxml-apis.jarを削除するか、JARファイルが競合していると言いました。しかし、提案されたすべての手順を実行しても、同じエラーが発生します。

17
rose

それは常にxml-apis.jar。それらをクラスパスから削除します(たとえば、webappのWEB-INF/libから削除します)。

14
mhaller

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自体からそれらを削除します。

4
kumarsparkz

バナンは正しいと思います。フォーラム http://forum.springsource.org/showthread.php?t=22597 同様の問題の解決策について説明しています。

通常、このような問題は、クラスパスに同じクラスのバージョンが複数あり、それらのバージョンが異なるクラスローダーによってロードされている場合に発生します。 DocumentBuilderFactoryの1つのバージョンは、システムクラスローダーによってロードされ、もう1つのバージョンはエンタープライズアプリケーションのクラスローダーによってロードされました。 XMLパーサーを呼び出すときは、親のバージョンのクラスが使用されます。あなたがキャストしているとき、あなたのプライベートバージョンが利用されます。これらのバージョンには互換性がないため、ClassCastExceptionが発生します。

4
AlexR

他の誰かが私と同じ状況にある場合に備えて、この質問に対する以前の回答に少し追加したいと思いました。 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>

これが誰かを助けることを願っています!

2
CatsAndCode

私たちもそのような問題を抱えています。エラーの理由はgwtライブラリにありました。レシピ:すべてのgwtクライアントライブラリをdistrから除外します。

1

私の場合、xml-apisライブラリを削除し、XML処理ライブラリをアップグレードすることでこの問題を解決することができました。

org.Apache.xmlbeans/xmlbeans/2.4.0から

org.Apache.xmlbeans/xmlbeans/2.6.0

参考までに、私はWeblogic10.3.6.0を使用しています。

0
sancho21