类Cast异常:com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl

Ozy*_*man 5 java jboss classcastexception

我对jboss的一个问题感到震惊.当我尝试将我的.war部署到服务器时,我得到以下错误,

java.lang.ClassCastException: com.sun.org.apache.xerces.internal.jaxp.SAXParserF actoryImpl cannot be cast to javax.xml.parsers.SAXParserFactory

从中可以看出,图书馆存在冲突.所以,我删除了包含xerces的jar文件,这是由jaxp-ri-1.4.1.jar发生的.现在,当我尝试重新部署时,我收到了这个新错误,

java.lang.NullPointerException
    at org.apache.commons.digester.Digester.getXMLReader(Digester.java:944)
    at org.apache.commons.digester.Digester.parse(Digester.java:1765)
    at org.apache.struts.action.ActionServlet.initServlet(ActionServlet.java
Run Code Online (Sandbox Code Playgroud)

抱怨它无法找到xml解析器.

那么,现在我的问题是,是否有人知道什么是解决方案.任何不包含xerces包的jaxp jar文件?

更新

我按照这里的建议做,现在我有一个新的错误,

java.lang.NoClassDefFoundError: Could not initialize class com.sun.xml.bind.v2.model.impl.RuntimeBuiltinLeafInfoImpl
Run Code Online (Sandbox Code Playgroud)

这是我删除的一个罐子里的一个类,里面包含SaxParserFactory :(

Vin*_*lds 2

您似乎删除了错误的 JAR。当 SAXParserFactoryImpl 的实例(它是 SAXParserFactory 的子类型)被转换为 SAXParserFactory 时,报告原始 ClassCastException。

该异常更可能是由于 JVM 中加载了两个 SAXParserFactory 实例而不是两个 SAXParserFactoryImpl 实例。在转换时,返回由不同类加载器加载的 SAXParserFactory 导致异常。因此,修复方法是识别类路径中具有 SAXParserFactory 版本冲突的 JAR。如果 Commons Digester 正在寻找特定的实现,那么删除解析器实现本身可能并不明智。