我收到以下错误消息:
java.lang.ClassCastException:weblogic.xml.jaxp.RegistryDocumentBuilderFactory无法强制转换为javax.xml.parsers.DocumentBuilderFactory
我经历过一些研究这个问题的论坛。他们说要删除xml-apis.jar
或者JAR文件是冲突的。但即使我做了所有建议的步骤,我也会遇到同样的错误。
答案 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。