使用WebLogic解析XML时出现ClassCastException

时间:2011-02-07 20:01:47

标签: java jsp servlets weblogic myeclipse

我收到以下错误消息:

  

java.lang.ClassCastException:weblogic.xml.jaxp.RegistryDocumentBuilderFactory无法强制转换为javax.xml.parsers.DocumentBuilderFactory

我经历过一些研究这个问题的论坛。他们说要删除xml-apis.jar或者JAR文件是冲突的。但即使我做了所有建议的步骤,我也会遇到同样的错误。

7 个答案:

答案 0 :(得分:13)

始终是xml-apis.jar。从类路径中删除它们(例如,从webapp的WEB-INF / lib中删除它们)。

答案 1 :(得分:4)

我认为Banang是对的。论坛http://forum.springsource.org/showthread.php?t=22597描述了类似问题的解决方案。

通常在类路径中存在同一类的多个版本时会发生此类问题,而这些版本由不同的类加载器加载。一个版本的DocumentBuilderFactory由系统类加载器加载,另一个版本由企业应用程序的类加载器加载。当您调用XML解析器时,将使用父类的类。当你投射你的私人版本时。这些版本不兼容导致ClassCastException。

答案 2 :(得分:4)

将xml-beans-1.xb2删除到lib目录。修改了POM,因此它不包含具有以下内容的jar文件:

<dependency>
    <groupId>xml-apis</groupId>
    <artifactId>xml-apis</artifactId>
    <version>1.0.b2</version>
    <scope>provided</scope>
</dependency>

答案 3 :(得分:3)

此问题的原因是您在库中有多个具有相同类名的jar。 转到WEB-INF / lib并删除xml-apis-1.0.b2.jar和stax-api-1.0.1.jar或从pom.xml本身删除它们,你就可以了。

答案 4 :(得分:2)

我希望对此问题的先前答案稍加补充,以防其他人处于相同的情况。由于我使用了CXF 2.2.3,我在WebLogic 9.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>

希望这有助于某人!

答案 5 :(得分:1)

我们也有这样的麻烦。错误的原因在于gwt库。配方:从发行版中排除所有gwt客户端库。

答案 6 :(得分:0)

至于我的情况,我设法通过删除xml-apis库并升级XML处理库来解决这个问题:

org.apache.xmlbeans/xmlbeans/2.4.0

org.apache.xmlbeans/xmlbeans/2.6.0

仅供参考,我使用的是Weblogic 10.3.6.0。