ClassCastException while parsing XML with WebLogic
我收到以下错误消息:
java.lang.ClassCastException: weblogic.xml.jaxp.RegistryDocumentBuilderFactory cannot be cast to javax.xml.parsers.DocumentBuilderFactory
我经历过一些研究这个问题的论坛。 他们说要删除
它始终是
将xml-beans-1.xb2删除到lib目录。修改了POM,因此它不包含具有以下内容的jar文件:
1 2 3 4 5 6 | <dependency> <groupId>xml-apis</groupId> xml-apis</artifactId> <version>1.0.b2</version> <scope>provided</scope> </dependency> |
我认为Banang是对的。论坛http://forum.springsource.org/showthread.php?t=22597描述了类似问题的解决方案。
通常,当类路径中存在同一类的多个版本而这些版本由不同的类加载器加载时会发生此类问题。一个版本的DocumentBuilderFactory由系统类加载器加载,另一个版本由企业应用程序的类加载器加载。当您调用XML解析器时,将使用父类的类。当你投射你的私人版本时。这些版本不兼容导致ClassCastException。
出现此问题的原因是您在库中有多个具有相同类名的jar。
转到WEB-INF / lib并删除xml-apis-1.0.b2.jar和stax-api-1.0.1.jar或从pom.xml本身删除它们,你会很高兴。
我希望对此问题的先前答案稍加补充,如果其他人处于相同的情况。由于我使用了CXF 2.2.3,我在WebLogic 9.2服务器上遇到了同样的问题。除了删除前面提到的xml-apis.jar之外,我还必须删除xmlParserAPIs库。
当我使用Maven2时,添加另一个包含只是一个简单的问题。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | <!-- CXF --> <dependency> <groupId>org.apache.cxf</groupId> cxf-bundle</artifactId> <version>${dependency.version.cxf}</version> <scope>compile</scope> <exclusions> <exclusion> xml-apis</artifactId> <groupId>xml-apis</groupId> </exclusion> <exclusion> xercesImpl</artifactId> <groupId>xerces</groupId> </exclusion> <exclusion> xmlbeans</artifactId> <groupId>org.apache.xmlbeans</groupId> </exclusion> <exclusion> xmlParserAPIs</artifactId> <groupId>xerces</groupId> </exclusion> </exclusions> </dependency> |
希望这有助于某人!
我们也有这样的麻烦。错误的原因在于gwt库。 Receipe:从distr中排除所有gwt客户端库。
至于我的情况,我设法通过删除xml-apis库并升级XML处理库来解决这个问题:
从
成
仅供参考,我正在使用Weblogic 10.3.6.0。