5

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

java.lang.ClassCastException: com.sun.org.apache.xerces.internal.jaxp.SAXParserF actoryImpl cannot be cast to javax.xml.parsers.SAXParserFactory

由此,很明显图书馆之间存在冲突。因此,我删除了 jaxp-ri-1.4.1.jar 发生的包含 xerces 的 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

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

4

2 回答 2

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

于 2011-08-02T10:07:26.727 回答
2

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

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

于 2010-11-25T14:56:57.887 回答