java - 类转换异常 : com. sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl

标签 java jboss classcastexception

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

java.lang.ClassCastException: com.sun.org.apache.xerces.internal.jaxp.SAXParserF actoryImpl 无法转换为 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

它提示找不到 xml 解析器。

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

更新

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

java.lang.NoClassDefFoundError: Could not initialize class com.sun.xml.bind.v2.model.impl.RuntimeBuiltinLeafInfoImpl

这是我删除的其中一个包含 SaxParserFactory 的 jar 的类:(

最佳答案

看来您删除了错误的 JAR。当 SAXParserFactoryImpl 的一个实例(SAXParserFactory 的子类型)被转换为 SAXParserFactory 时,会报告原始的 ClassCastException。

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

关于java - 类转换异常 : com. sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4278213/

相关文章:

java - 如何确定日期是否在 Java 中的两个日期之间?

jboss - Jboss 超时如何工作?

java - 在应用程序服务器中调用远程 Bean 与本地 Bean

java - Wildfly 16.0.0.Final 和 ejb-client 与安全领域的连接

java.lang.ClassCastException : java. lang.String JSON Tokener android

java - 如何获取泛型类型的 Class<?> 对象

java - 从命令行读取文件时出现数组越界异常。 java

java - 如何解决 ClassCastException?也许是 JFileChooser 的类型转换错误

java - 强制变量始终为 'long' 类型

java - Android Volley - HTTP 代码 401 的奇怪错误 - java.io.IOException : No authentication challenges found