类铸件异常:com.sun.org.apache.xerces.internal.jaxp.documentbuilderfactoryimpl
-
28-09-2019 - |
题
我在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文件吗?
更新
我按照建议 这里 现在我有一个新错误,
java.lang.NoClassDefFoundError: Could not initialize class com.sun.xml.bind.v2.model.impl.RuntimeBuiltinLeafInfoImpl
这是我删除的罐子中的一个类,其中包含saxparserfactory :(
解决方案
看来您已删除了错误的罐子。当SaxparserFactoryImpl(这是SaxparserFactory的子类型)的实例被铸造为SaxparserFactory时,就报告了原始的ClassCastException。
这个例外很可能是由于以下事实:有两个实例的saxparserfactory实例,而不是在JVM中加载两个saxparserfactoryimpl的实例。在铸造时,返回了由其他类负载器加载的SaxparserFactory,导致例外。因此,解决方案是识别类Path中的JARS,这些JARS具有冲突的SaxparserFactory版本。如果Commons Digester正在寻找特定的实施,删除解析器实施本身可能不明智。
其他提示
我猜...您正在使用JBOSS 5.1。如果是这样,则是XML解析器和类加载问题。您必须定义jboss-classloading.xml
看 http://www.coderanch.com/t/523519/jboss/cast 和 http://www.mastertheboss.com/jboss-application-ser...oss-5-cloadloading-issues.html