2010-11-25 149 views
5

我觸動了在JBoss中的一個問題。當我嘗試我的.war部署到服務器上,我得到這個下面的錯誤,類轉換異常:com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl

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

由此而生,這是很明顯的是圖書館的衝突。所以,我刪除了jar文件,其中包含xerces,這是由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 :(

+0

嗨,我也如你所說,我現在有一個新的錯誤, java.lang.NoClassDefFoundError:無法初始化類的com.sun。 xml.bind.v2.model.impl.RuntimeBuiltinLeafInfoImpl 這是我從其中一個包含SaxParserFactory的被刪除的jar中的一個類:( – Ozyman 2010-11-25 15:49:59

+0

我們可以在新刪除的JAR上獲得的任何信息? – 2010-11-25 15:53:07

回答

2

看來,你已經刪除了錯誤的JAR。當SAXParserFactoryImpl(是的SAXParserFactory的一個亞型)的實例被強制轉換爲報道的原ClassCastException異常的SAXParserFactory。

此異常更可能是由於SAXParserFactory有兩個實例,而不是在JVM中加載了兩個SAXParserFactoryImpl實例。在投射時,由不同的類加載器加載的SAXParserFactory返回,導致異常。因此,修復的方法是在類路徑中標識具有衝突版本的SAXParserFactory的JAR。如果Commons Digester正在尋找特定的實現,那麼刪除解析器實現本身可能並不明智。

+0

我之前刪除的jar是jaxp -ri-1.4.1.jar,它給了我NullPointerException。現在我刪除了jaxp-api.jar。我用jarfinder.com來查找所有的jar文件xParserFactory存在並且出現在我擁有jaxp-api的所有jar中。 – Ozyman 2010-11-25 15:53:57