AbstractMethodError xerces DeferredDocumentImpl. setDocumentURI

原文出處:http://blog.chenlb.com/2010/11/abstract-method-error-xerces.html

前天項目用 jetty 啓動,打開 solr 的管理主頁,出現 java.lang.AbstractMethodError: org.apache.xerces.dom.DeferredDocumentImpl.setDocumentURI(Ljava/lang/String;)V 真受不了(之前還好端端的)。項目不用小型的 web 容器,很杯具。服務器用的是 jboss。

找了很多資料(有很多郵件列表打不開,gfw?),有一兩篇可靠:ParserUtils 從 Web 應用程序拾取解析器Sun Java System Application Server Platform Edition 9 Release Notes 基本是同一篇。

說,可以用在jvm 啓動時加以下參數:

  1. -Djavax.xml.parsers.DocumentBuilderFactory=com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl  

也可以刪除 WEB-INF/lib 中的 org.apache.xerces 包。我的項目裏有 xerces-1.4.4.jar,xercesImpl-2.9.X.jar。刪除 pom.xml 的 xercesImpl 依賴,還出現 xercesImpl-2.8.1.jar,唉,但不會出現上面的問題了。xerces 沒使用過。

思考:java 平臺開源的包太多,依賴亂,衝突多。


轉者注:MyEclipse中採用,Windows-->Preferences-->Install JREs,選擇你安裝的JDK,設置以下參數即可。


另外伴隨這種情況發生的還有xmlwsdl包的衝突問題,情形與此類似,一般是因爲包依賴中有多個wsdl包的緣故,你查找一下,把其中的老版本刪除即可。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章