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

时间:2010-11-25 14:39:43

标签: 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

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

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

更新

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

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

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

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:2)

我猜...你正在使用JBoss 5.1。如果是这样,那么它是xml解析器和类加载问题。您必须定义jboss-classloading.xml

请参阅http://www.coderanch.com/t/523519/JBoss/Casthttp://www.mastertheboss.com/jboss-application-ser...oss-5-classloading-issues.html

相关问题