我在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/casthttp://www.mastertheboss.com/jboss-application-ser...oss-5-cloadloading-issues.html

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top