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冲突

你可能感兴趣的:(解决方案)