我对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的类:(
答案 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/Cast和http://www.mastertheboss.com/jboss-application-ser...oss-5-classloading-issues.html