xercesImpl.jar与cxf冲突的解决方案
在使用cxf做webserive时,第一次没有添加与数据库操作时一切正常,当添加了commons-pool.jar包以后就报如下错误:
java.lang.AbstractMethodError: org.apache.xerces.dom.DeferredDocumentImpl.setXmlStandalone(Z)V org.apache.cxf.transport.http.WSDLQueryHandler.updateDoc(WSDLQueryHandler.java:324) org.apache.cxf.transport.http.WSDLQueryHandler.writeResponse(WSDLQueryHandler.java:223) org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:170) org.apache.cxf.transport.servlet.AbstractCXFServlet.invoke(AbstractCXFServlet.java:148) org.apache.cxf.transport.servlet.AbstractHTTPServlet.handleRequest(AbstractHTTPServlet.java:179) org.apache.cxf.transport.servlet.AbstractHTTPServlet.doGet(AbstractHTTPServlet.java:108) javax.servlet.http.HttpServlet.service(HttpServlet.java:690) org.apache.cxf.transport.servlet.AbstractHTTPServlet.service(AbstractHTTPServlet.java:159)
?
?
究其原因是因为cxf的包与xercesImpl.jar包冲突,因为commons-pool.jar依赖于xercesImpl.jar包。所以造成上面的错误,解决方案如下:
<dependency>
???<groupId>commons-pool</groupId>
???<artifactId>commons-pool</artifactId>
???<version>1.1</version>
???<exclusions>
????<exclusion>
?????<groupId>xerces</groupId>
?????<artifactId>xerces</artifactId>
????</exclusion>
???</exclusions>
??</dependency>
??<dependency>
???<groupId>xerces</groupId>
???<artifactId>xercesImpl</artifactId>
???<version>2.8.0</version>
??</dependency>
?
升级xerces包的版本号,在2.8.0的版本中就不与cxf冲突