las dependencias del mismo módulo o entre dependencias de distintos módulos que a su vez pueden dependen entre sí (en mi caso
los conflictos entre dependencias se han dado en el mismo módulo).
En este caso, el código es un módulo que alberga varios servicios web, que están generados (los objetos y dependencias) unos con Axis y otros con CXF.
La traza generada por este conflicto de dependencias es el siguiente:
Caused by: java.lang.NoSuchFieldError: QUALIFIED at org.apache.cxf.service.model.SchemaInfo.setSchema(SchemaInfo.java:146) at org.apache.cxf.wsdl11.SchemaUtil.extractSchema(SchemaUtil.java:136) at org.apache.cxf.wsdl11.SchemaUtil.getSchemas(SchemaUtil.java:73) at org.apache.cxf.wsdl11.SchemaUtil.getSchemas(SchemaUtil.java:65) at org.apache.cxf.wsdl11.SchemaUtil.getSchemas(SchemaUtil.java:60) at org.apache.cxf.wsdl11.WSDLServiceBuilder.getSchemas(WSDLServiceBuilder.java:372) at org.apache.cxf.wsdl11.WSDLServiceBuilder.buildServices(WSDLServiceBuilder.java:339) at org.apache.cxf.wsdl11.WSDLServiceBuilder.buildServices(WSDLServiceBuilder.java:203) at org.apache.cxf.wsdl11.WSDLServiceFactory.create(WSDLServiceFactory.java:175) at org.apache.cxf.service.factory.ReflectionServiceFactoryBean.buildServiceFromWSDL(ReflectionServiceFactoryBean.java:426) at org.apache.cxf.service.factory.ReflectionServiceFactoryBean.initializeServiceModel(ReflectionServiceFactoryBean.java:546) at org.apache.cxf.service.factory.ReflectionServiceFactoryBean.create(ReflectionServiceFactoryBean.java:263) at org.apache.cxf.jaxws.support.JaxWsServiceFactoryBean.create(JaxWsServiceFactoryBean.java:205) at org.apache.cxf.frontend.AbstractWSDLBasedEndpointFactory.createEndpoint(AbstractWSDLBasedEndpointFactory.java:102) at org.apache.cxf.frontend.ServerFactoryBean.create(ServerFactoryBean.java:159) at org.apache.cxf.jaxws.JaxWsServerFactoryBean.create(JaxWsServerFactoryBean.java:211) at org.apache.cxf.jaxws.EndpointImpl.getServer(EndpointImpl.java:454) at org.apache.cxf.jaxws.EndpointImpl.doPublish(EndpointImpl.java:334) at org.apache.cxf.jaxws.EndpointImpl.publish(EndpointImpl.java:251) at org.apache.cxf.jaxws.EndpointImpl.publish(EndpointImpl.java:537) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeCustomInitMethod(AbstractAutowireCapableBeanFactory.java:1608) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1549) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1479) ... 53 more
La forma de solucionarlo es mostrar las dependencias del módulo o proyecto. Si estamos utilizando maven, la orden que tendremos que ejecutar
será la siguiente:
mvn dependency:treeSi no tenemos el código compilado, podemos ejecutar para generar el arbol de dependencias:
mvn compile dependency:treeCon la sentencia anterior obtendremos una salida parecida a la siguiente:
[INFO] --- maven-dependency-plugin:2.1:tree (default-cli) @ miprosegur-ws --- [INFO] com.prosegur.miprosegur:miprosegur-ws:war:1.0-SNAPSHOT [INFO] +- com.prosegur.miprosegur:miprosegur-common:jar:1.0-SNAPSHOT:compile [INFO] | +- org.springframework:spring-core:jar:3.2.3.RELEASE:compile [INFO] | | \- commons-logging:commons-logging:jar:1.1.1:compile [INFO] | +- org.springframework:spring-context:jar:3.2.3.RELEASE:compile [INFO] | | +- org.springframework:spring-beans:jar:3.2.3.RELEASE:compile [INFO] | | \- org.springframework:spring-expression:jar:3.2.3.RELEASE:compile [INFO] | +- org.springframework:spring-context-support:jar:3.2.3.RELEASE:compile [INFO] | +- org.springframework:spring-tx:jar:3.2.3.RELEASE:compile [INFO] | | \- aopalliance:aopalliance:jar:1.0:compile [INFO] | +- org.springframework:spring-orm:jar:3.2.3.RELEASE:compile [INFO] | | \- org.springframework:spring-jdbc:jar:3.2.3.RELEASE:compile [INFO] | +- org.springframework:spring-web:jar:3.2.3.RELEASE:compile [INFO] | +- org.springframework:spring-webmvc:jar:3.2.3.RELEASE:compile [INFO] | +- org.springframework:spring-aop:jar:3.2.3.RELEASE:compile [INFO] | +- org.springframework:spring-test:jar:3.2.3.RELEASE:compile [INFO] | +- org.springframework.mobile:spring-mobile-device:jar:1.1.0.M3:compile [INFO] | +- log4j:log4j:jar:1.2.16:compile [INFO] | +- org.apache.shiro:shiro-core:jar:1.2.2:compile [INFO] | | +- org.slf4j:slf4j-api:jar:1.7.5:compile (version managed from 1.6.4) [INFO] | | \- commons-beanutils:commons-beanutils:jar:1.8.0:compile (version managed from 1.8.3) [INFO] | +- org.apache.shiro:shiro-web:jar:1.2.2:compile [INFO] | +- org.apache.shiro:shiro-spring:jar:1.2.2:compile [INFO] | +- jstl:jstl:jar:1.2:compile [INFO] | +- org.dbunit:dbunit:jar:2.4.9:compile [INFO] | | \- commons-collections:commons-collections:jar:3.1:compile (version managed from 3.2.1) [INFO] | +- commons-io:commons-io:jar:2.4:compile [INFO] | +- commons-fileupload:commons-fileupload:jar:1.2.2:compile [INFO] | +- org.apache.xmlbeans:xmlbeans:jar:2.4.0:compile [INFO] | +- javax.validation:validation-api:jar:1.0.0.GA:compile [INFO] | +- org.codehaus.jackson:jackson-mapper-asl:jar:1.9.12:compile [INFO] | | \- org.codehaus.jackson:jackson-core-asl:jar:1.9.12:compile [INFO] | +- org.codehaus.jackson:jackson-jaxrs:jar:1.9.12:compile [INFO] | +- org.codehaus.jackson:jackson-xc:jar:1.9.12:compile [INFO] | +- javax.servlet:jstl:jar:1.2:compile [INFO] | +- commons-dbcp:commons-dbcp:jar:1.2.2:compile [INFO] | | \- commons-pool:commons-pool:jar:1.3:compile [INFO] | +- org.aspectj:aspectjrt:jar:1.7.3:compile [INFO] | +- org.aspectj:aspectjweaver:jar:1.7.3:compile [INFO] | +- commons-codec:commons-codec:jar:1.8:compile [INFO] | +- org.apache.axis2:axis2-transport-http:jar:1.6.1:compile [INFO] | | \- org.apache.httpcomponents:httpcore:jar:4.0:compile [INFO] | +- org.apache.axis2:axis2-adb:jar:1.6.1:compile [INFO] | | \- org.apache.geronimo.specs:geronimo-activation_1.1_spec:jar:1.0.2:compile [INFO] | +- org.apache.axis2:axis2-java2wsdl:jar:1.6.1:compile [INFO] | | +- org.apache.ant:ant:jar:1.7.0:compile --> [INFO] | | +- org.apache.ws.commons.schema:XmlSchema:jar:1.4.7:compile <-- ** Dependencia en conflicto ** [INFO] | | \- org.apache.geronimo.specs:geronimo-javamail_1.4_spec:jar:1.6:compile [INFO] | +- org.apache.axis2:axis2-adb-codegen:jar:1.6.1:compile [INFO] | | \- commons-cli:commons-cli:jar:1.2:compile [INFO] | +- org.apache.axis2:axis2-ant-plugin:jar:1.6.1:compile [INFO] | | +- wsdl4j:wsdl4j:jar:1.6.2:compile [INFO] | | \- org.apache.neethi:neethi:jar:3.0.1:compile [INFO] | +- org.apache.axis2:axis2-clustering:jar:1.6.1:compile [INFO] | | +- org.apache.tomcat:tribes:jar:6.0.16:compile [INFO] | | \- org.apache.tomcat:juli:jar:6.0.16:compile [INFO] | +- org.apache.axis2:axis2-codegen:jar:1.6.1:compile [INFO] | +- org.apache.axis2:axis2-corba:jar:1.6.1:compile [INFO] | | \- antlr:antlr:jar:2.7.7:compile [INFO] | +- org.apache.axis2:axis2-fastinfoset:jar:1.6.1:compile [INFO] | | +- com.sun.xml.fastinfoset:FastInfoset:jar:1.2.7:compile [INFO] | | \- commons-httpclient:commons-httpclient:jar:3.1:compile [INFO] | +- org.apache.axis2:axis2-jaxbri:jar:1.6.1:compile [INFO] | | +- com.sun.xml.bind:jaxb-impl:jar:2.1.7:compile [INFO] | | +- com.sun.xml.bind:jaxb-xjc:jar:2.1.7:compile [INFO] | | \- javax.xml.bind:jaxb-api:jar:2.1:compile [INFO] | +- org.apache.axis2:axis2-jaxws:jar:1.6.1:compile [INFO] | | +- org.apache.geronimo.specs:geronimo-annotation_1.0_spec:jar:1.1:compile [INFO] | | +- org.apache.geronimo.specs:geronimo-jaxws_2.2_spec:jar:1.0:compile [INFO] | | \- xalan:xalan:jar:2.7.0:compile [INFO] | +- org.apache.axis2:axis2-jibx:jar:1.6.1:compile [INFO] | | +- org.jibx:jibx-bind:jar:1.2:compile [INFO] | | | \- bcel:bcel:jar:5.1:compile [INFO] | | | \- regexp:regexp:jar:1.2:compile [INFO] | | \- org.jibx:jibx-run:jar:1.2:compile [INFO] | +- org.apache.axis2:axis2-json:jar:1.6.1:compile [INFO] | | \- org.codehaus.jettison:jettison:jar:1.0-RC2:compile [INFO] | +- org.apache.axis2:axis2-kernel:jar:1.6.1:compile [INFO] | | +- org.apache.ws.commons.axiom:axiom-api:jar:1.2.12:compile [INFO] | | | +- jaxen:jaxen:jar:1.1.1:compile [INFO] | | | \- org.apache.geronimo.specs:geronimo-stax-api_1.0_spec:jar:1.0.1:compile [INFO] | | +- org.apache.ws.commons.axiom:axiom-impl:jar:1.2.12:compile [INFO] | | +- org.apache.geronimo.specs:geronimo-ws-metadata_2.0_spec:jar:1.1.2:compile [INFO] | | +- org.apache.geronimo.specs:geronimo-jta_1.1_spec:jar:1.1:compile [INFO] | | +- org.apache.woden:woden-api:jar:1.0M9:compile [INFO] | | +- org.apache.woden:woden-impl-dom:jar:1.0M9:compile [INFO] | | | \- org.apache.woden:woden-impl-commons:jar:1.0M9:compile [INFO] | | \- javax.ws.rs:jsr311-api:jar:1.0:compile [INFO] | +- org.apache.axis2:axis2-metadata:jar:1.6.1:compile [INFO] | | \- com.sun.xml.ws:jaxws-tools:jar:2.1.3:compile [INFO] | +- org.apache.axis2:axis2-mtompolicy:jar:1.6.1:compile [INFO] | +- org.apache.axis2:axis2-saaj:jar:1.6.1:compile [INFO] | | +- org.apache.geronimo.specs:geronimo-saaj_1.3_spec:jar:1.0.1:compile [INFO] | | \- org.apache.ws.commons.axiom:axiom-dom:jar:1.2.12:compile [INFO] | +- org.apache.axis2:axis2-soapmonitor-servlet:jar:1.6.1:compile [INFO] | +- org.apache.axis2:axis2-spring:jar:1.6.1:compile [INFO] | +- org.apache.axis2:axis2-transport-local:jar:1.6.1:compile [INFO] | +- org.apache.axis2:axis2-xmlbeans:jar:1.6.1:compile [INFO] | | \- org.apache.ant:ant-launcher:jar:1.7.0:compile [INFO] | +- javax.jms:jms-api:jar:1.1-rev-1:compile [INFO] | \- com.tibco:jms:jar:1.0:compile [INFO] +- com.prosegur.miprosegur:miprosegur-business:jar:1.0-SNAPSHOT:compile [INFO] | +- com.prosegur.miprosegur:miprosegur-v1:jar:1.0-SNAPSHOT:compile [INFO] | | +- asm:asm-attrs:jar:2.2.3:compile [INFO] | | +- org.hibernate:hibernate:jar:3.2.7.ga:compile [INFO] | | | +- net.sf.ehcache:ehcache:jar:1.2.3:compile [INFO] | | | +- javax.transaction:jta:jar:1.0.1B:compile [INFO] | | | +- dom4j:dom4j:jar:1.6.1:compile [INFO] | | | \- cglib:cglib:jar:2.2:compile (version managed from 2.1_3) [INFO] | | +- c3p0:c3p0:jar:0.9.1.2:compile (version managed from 0.9.1) [INFO] | | +- c3p0:c3p0-oracle-thin-extras:jar:0.9.0.2:compile [INFO] | | +- org.hibernate:hibernate-core:jar:3.6.9.Final:compile [INFO] | | | +- org.hibernate:hibernate-commons-annotations:jar:3.2.0.Final:compile [INFO] | | | \- org.hibernate.javax.persistence:hibernate-jpa-2.0-api:jar:1.0.1.Final:compile [INFO] | | +- joda-time:joda-time:jar:2.1:compile [INFO] | | +- joda-time:joda-time-hibernate:jar:0.8:compile [INFO] | | +- commons-lang:commons-lang:jar:2.6:compile [INFO] | | +- org.json:json:jar:20070829:compile [INFO] | | +- com.lowagie:itext:jar:2.1.7:compile [INFO] | | | +- bouncycastle:bcmail-jdk14:jar:138:compile [INFO] | | | +- bouncycastle:bcprov-jdk14:jar:138:compile [INFO] | | | \- org.bouncycastle:bctsp-jdk14:jar:1.38:compile [INFO] | | | +- org.bouncycastle:bcprov-jdk14:jar:1.38:compile [INFO] | | | \- org.bouncycastle:bcmail-jdk14:jar:1.38:compile [INFO] | | +- javax.mail:mail:jar:1.4:compile [INFO] | | +- javax.xml:jaxrpc-api-osgi:jar:1.1-b01:compile [INFO] | | +- xerces:xercesImpl:jar:2.8.1:compile [INFO] | | | \- xml-apis:xml-apis:jar:1.3.03:compile [INFO] | | +- org.jdom:jdom:jar:1.1:compile [INFO] | | +- net.sourceforge.jexcelapi:jxl:jar:2.6.12:compile [INFO] | | +- org.ostermiller:utils:jar:1.07.00:compile [INFO] | | +- org.apache.poi:poi:jar:3.0-FINAL:compile [INFO] | | +- displaytag:displaytag:jar:1.2:compile [INFO] | | +- org.ajaxtags:ajaxtags:jar:1.1.5:compile [INFO] | | | \- net.htmlparser:jericho-html:jar:1.5-dev1:compile [INFO] | | +- taglibs:standard:jar:1.1.2:compile [INFO] | | +- com.google.code.gson:gson:jar:1.7.1:compile [INFO] | | \- net.sourceforge.javacsv:javacsv:jar:2.0:compile [INFO] | \- com.prosegur.miprosegur:miprosegur-persistence:jar:1.0-SNAPSHOT:compile [INFO] | +- org.mybatis:mybatis:jar:3.2.2:compile [INFO] | +- org.mybatis:mybatis-spring:jar:1.2.0:compile [INFO] | +- com.oracle:ojdbc6:jar:11.2.0.3:compile [INFO] | \- org.hibernate:hibernate-validator:jar:4.2.0.Final:compile [INFO] +- junit:junit:jar:4.8.2:test [INFO] +- org.apache.cxf:cxf-rt-frontend-jaxws:jar:2.7.5:compile [INFO] | +- xml-resolver:xml-resolver:jar:1.2:compile [INFO] | +- asm:asm:jar:3.3.1:compile [INFO] | +- org.apache.cxf:cxf-api:jar:2.7.5:compile [INFO] | | +- org.codehaus.woodstox:woodstox-core-asl:jar:4.2.0:compile [INFO] | | | \- org.codehaus.woodstox:stax2-api:jar:3.1.1:compile --> [INFO] | | \- org.apache.ws.xmlschema:xmlschema-core:jar:2.0.3:compile <-- ** Dependencia en conflicto ** [INFO] | +- org.apache.cxf:cxf-rt-core:jar:2.7.5:compile [INFO] | +- org.apache.cxf:cxf-rt-bindings-soap:jar:2.7.5:compile [INFO] | | \- org.apache.cxf:cxf-rt-databinding-jaxb:jar:2.7.5:compile [INFO] | +- org.apache.cxf:cxf-rt-bindings-xml:jar:2.7.5:compile [INFO] | +- org.apache.cxf:cxf-rt-frontend-simple:jar:2.7.5:compile [INFO] | \- org.apache.cxf:cxf-rt-ws-addr:jar:2.7.5:compile [INFO] | \- org.apache.cxf:cxf-rt-ws-policy:jar:2.7.5:compile [INFO] +- org.apache.cxf:cxf-rt-frontend-jaxrs:jar:2.7.5:compile [INFO] | \- javax.ws.rs:javax.ws.rs-api:jar:2.0-m10:compile [INFO] +- org.apache.cxf:cxf-rt-transports-http:jar:2.7.5:compile [INFO] +- org.apache.cxf:cxf-rt-transports-http-jetty:jar:2.7.5:compile [INFO] | +- org.eclipse.jetty:jetty-server:jar:8.1.7.v20120910:compile [INFO] | | +- org.eclipse.jetty:jetty-continuation:jar:8.1.7.v20120910:compile [INFO] | | \- org.eclipse.jetty:jetty-http:jar:8.1.7.v20120910:compile [INFO] | | \- org.eclipse.jetty:jetty-io:jar:8.1.7.v20120910:compile [INFO] | | \- org.eclipse.jetty:jetty-util:jar:8.1.7.v20120910:compile [INFO] | +- org.eclipse.jetty:jetty-security:jar:8.1.7.v20120910:compile [INFO] | \- org.apache.geronimo.specs:geronimo-servlet_3.0_spec:jar:1.0:compile [INFO] \- org.codehaus.woodstox:wstx-asl:jar:3.2.8:compile [INFO] \- stax:stax-api:jar:1.0.1:compileCon los símbolos --> y <-- he han señalado las dependencias que entran en conflicto en este caso, ya que la clases contenidas en
org.apache.ws.commons.schema:XmlSchema:jar:1.4.7
ya se encuentran en org.apache.ws.xmlschema:xmlschema-core:jar:2.0.3
.La forma de solucionarlo es añadiendo una etiqueta <exclusion> en el pom para evitar la inclusión de la dependencia conflictiva.
Podremos ver en el árbol de dependencias que las que entran en conflicto están en diferentes módulos, y además éstos son dependencias del módulo
que contiene los servicios web, por lo que para evitar el conflicto se excluye la que nos interese, en este caso excluímos la dependencia de Axis.
Incluyendo las siguientes entiquetas en el pom solucionaremos el problema:
<dependency> <groupId>com.prosegur.miprosegur</groupId> <artifactId>miprosegur-common</artifactId> <exclusions> <exclusion> <groupId>org.apache.ws.commons.schema</groupId> <artifactId>XmlSchema</artifactId> </exclusion> </exclusions> </dependency>