Java 使用WebLogic解析XML时发生ClassCastException

Java 使用WebLogic解析XML时发生ClassCastException,java,jsp,servlets,weblogic,myeclipse,Java,Jsp,Servlets,Weblogic,Myeclipse,我收到以下错误消息: java.lang.ClassCastException:weblogic.xml.jaxp.RegistryDocumentBuilderFactory不能强制转换为javax.xml.parsers.DocumentBuilderFactory 我已经通过一些论坛对此进行了研究。他们说要删除xmlapi.jar,或者jar文件有冲突。但即使我做了所有建议的步骤,我还是得到了同样的错误。我认为巴南是正确的。论坛描述了类似问题的解决方案 通常,当类路径中存在同一类的多个版本

我收到以下错误消息:

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


我已经通过一些论坛对此进行了研究。他们说要删除
xmlapi.jar
,或者jar文件有冲突。但即使我做了所有建议的步骤,我还是得到了同样的错误。

我认为巴南是正确的。论坛描述了类似问题的解决方案


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

总是
xmlapi.jar
。从你的类路径中删除它们(例如,从你的webapp的WEB-INF/lib中删除它们)。

我想对之前对这个问题的回答稍加补充,以防其他人与我的情况相同。由于使用CXF 2.2.3,我在WebLogic 9.2服务器上遇到了相同的问题。除了删除前面提到的xml-api.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>

org.apache.cxf
cxf束
${dependency.version.cxf}
编译
xml API
xml API
干细胞移植
薛西斯
xmlbeans
org.apache.xmlbeans
xmlParserAPIs
薛西斯

希望这对别人有帮助

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

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

将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>

xml API
xml API
1.0.b2
假如

至于我的案例,我通过删除xml API库并升级xml处理库成功地解决了这个问题:

org.apache.xmlbeans/xmlbeans/2.4.0

进入
org.apache.xmlbeans/xmlbeans/2.6.0


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

请查看此线程中的sotretus答案。如果您使用的是Maven2,那么它可能适用于您。您确认WEB-INF/lib中没有jar了吗?我将所有jar都放在WEB-INF/lib文件夹中。但是出现此错误…[在java maven中处理xerces hell][1][1]:谢谢。虽然我的设置只需要xml API排除。在我的情况下,我必须使用这个完整的排除包,谢谢!