CXF failing with IncompatibleClassChangeError exception on Unit Test

16,198

Solution 1

So I it turns out my IDE was messing up my build.
I thought that since I had maven configured, that it would just be running pure maven, under the hood.
In my IDE I had configured an installed Directory for Axis2-1.6.0 to be used before my maven dependencies. Axis-2 was left over from an OLD version of my application and held duplicates of a lot dependencies including something called Neethi, which I've seen listed else where as a potential source of this error with CXF.

Solution 2

It seems the version of class org.apache.cxf.ws.policy.AssertionBuilderRegistryImpl that is being loaded is invalid.

You can check the WAR to see if there are any duplicate classes using this command (from JHades, a tool I've made), see here for the duplicate classes report:

java -jar jhades-standalone-report.jar path/to/war/webapp.war

The report should give something like this:

>>>> Jar overlap report:

poi-3.5-FINAL-20090928.jar overlaps with poi-3.7-20101029.jar - total overlapping classes: 990
xercesImpl-2.7.0.jar overlaps with xercesImpl-2.9.1.jar - total overlapping classes: 867
xalan-2.6.0.jar overlaps with xalan-2.7.1.jar - total overlapping classes: 711
bcel-5.2.jar overlaps with xalan-2.7.1.jar - total overlapping classes: 361
xml-apis-2.9.1.jar overlaps with xml-apis.jar - total overlapping classes: 301
jasperreports-applet-3.7.1.jar overlaps with jasperreports-javaflow-3.7.1.jar - total overlapping classes: 254
jasperreports-3.7.1.jar overlaps with jasperreports-applet-3.7.1.jar - total overlapping classes: 254
...

Total number of classes with more than one version: 6169

Also it's possible to query the classpath for all versions of the class and for the currently used version:

System.out.println("All versions of AssertionBuilderRegistryImpl:" + getClass().getClassLoader().getResources("org/apache/cxf/ws/policy/AssertionBuilderRegistryImpl.class"));

System.out.println("Currently used version of AssertionBuilderRegistryImpl:" + getClass().getClassLoader().getResource("org/apache/cxf/ws/policy/AssertionBuilderRegistryImpl.class"));

There are a couple of possibilities: either multiple versions exist, and only one is correct. In that case exclude the jars with the wrong versions in maven.

If only one version exists, then it's the wrong one, use mvn dependency:tree -Ddetail=true to find why it's included, and update the pom to load the correct version.

Share:
16,198
Raystorm
Author by

Raystorm

PHP refugee who's moved on to C#, and Java programming. #SOreadytohelp

Updated on June 05, 2022

Comments

  • Raystorm
    Raystorm almost 2 years

    I have an application using Spring-3.2.X and cxf-2.7.5

    I'm importing cxf into my spring's app context like so:

    <import resource="classpath:META-INF/cxf/cxf.xml" />
    <import resource="classpath:cxf.xml" />
    

    However, When I run the tests I end up with the following exception:

    java.lang.IllegalStateException: Failed to load ApplicationContext
        at org.springframework.test.context.CacheAwareContextLoaderDelegate.loadContext(CacheAwareContextLoaderDelegate.java:99)
        at org.springframework.test.context.TestContext.getApplicationContext(TestContext.java:122)
        at org.springframework.test.context.web.ServletTestExecutionListener.setUpRequestContextIfNecessary(ServletTestExecutionListener.java:154)
        at org.springframework.test.context.web.ServletTestExecutionListener.prepareTestInstance(ServletTestExecutionListener.java:100)
        at org.springframework.test.context.TestContextManager.prepareTestInstance(TestContextManager.java:312)
        at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.createTest(SpringJUnit4ClassRunner.java:211)
        at org.springframework.test.context.junit4.SpringJUnit4ClassRunner$1.runReflectiveCall(SpringJUnit4ClassRunner.java:288)
        at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
        at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.methodBlock(SpringJUnit4ClassRunner.java:284)
        at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:231)
        at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:88)
        at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238)
        at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63)
        at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236)
        at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53)
        at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229)
        at org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61)
        at org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:71)
        at org.junit.runners.ParentRunner.run(ParentRunner.java:309)
        at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:174)
        at org.junit.runner.JUnitCore.run(JUnitCore.java:160)
        at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:74)
        at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:202)
        at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:65)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at com.intellij.rt.execution.application.AppMain.main(AppMain.java:120)
    Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'cxf' defined in class path resource [META-INF/cxf/cxf.xml]: Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [org.apache.cxf.bus.spring.SpringBus]: Constructor threw exception; nested exception is org.apache.cxf.bus.extension.ExtensionException: Could not load extension class org.apache.cxf.ws.policy.AssertionBuilderRegistryImpl.
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:1037)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:983)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:487)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:458)
        at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:296)
        at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:223)
        at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:293)
        at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194)
        at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:628)
        at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:932)
        at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:479)
        at org.springframework.test.context.web.AbstractGenericWebContextLoader.loadContext(AbstractGenericWebContextLoader.java:128)
        at org.springframework.test.context.web.AbstractGenericWebContextLoader.loadContext(AbstractGenericWebContextLoader.java:60)
        at org.springframework.test.context.support.AbstractDelegatingSmartContextLoader.delegateLoading(AbstractDelegatingSmartContextLoader.java:100)
        at org.springframework.test.context.support.AbstractDelegatingSmartContextLoader.loadContext(AbstractDelegatingSmartContextLoader.java:248)
        at org.springframework.test.context.CacheAwareContextLoaderDelegate.loadContextInternal(CacheAwareContextLoaderDelegate.java:64)
        at org.springframework.test.context.CacheAwareContextLoaderDelegate.loadContext(CacheAwareContextLoaderDelegate.java:91)
        ... 28 more
    Caused by: org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [org.apache.cxf.bus.spring.SpringBus]: Constructor threw exception; nested exception is org.apache.cxf.bus.extension.ExtensionException: Could not load extension class org.apache.cxf.ws.policy.AssertionBuilderRegistryImpl.
        at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:163)
        at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:87)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:1030)
        ... 44 more
    Caused by: org.apache.cxf.bus.extension.ExtensionException: Could not load extension class org.apache.cxf.ws.policy.AssertionBuilderRegistryImpl.
        at org.apache.cxf.bus.extension.Extension.tryClass(Extension.java:173)
        at org.apache.cxf.bus.extension.Extension.getClassObject(Extension.java:185)
        at org.apache.cxf.bus.extension.ExtensionManagerImpl.activateAllByType(ExtensionManagerImpl.java:138)
        at org.apache.cxf.bus.extension.ExtensionManagerBus.<init>(ExtensionManagerBus.java:126)
        at org.apache.cxf.bus.extension.ExtensionManagerBus.<init>(ExtensionManagerBus.java:138)
        at org.apache.cxf.bus.spring.SpringBus.<init>(SpringBus.java:47)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
        at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
        at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:148)
        ... 46 more
    Caused by: java.lang.IncompatibleClassChangeError: Implementing class
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClassCond(ClassLoader.java:632)
        at java.lang.ClassLoader.defineClass(ClassLoader.java:616)
        at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)
        at java.net.URLClassLoader.defineClass(URLClassLoader.java:283)
        at java.net.URLClassLoader.access$000(URLClassLoader.java:58)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:197)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClassCond(ClassLoader.java:632)
        at java.lang.ClassLoader.defineClass(ClassLoader.java:616)
        at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)
        at java.net.URLClassLoader.defineClass(URLClassLoader.java:283)
        at java.net.URLClassLoader.access$000(URLClassLoader.java:58)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:197)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
        at org.apache.cxf.bus.extension.Extension.tryClass(Extension.java:169)
        ... 56 more
    

    From reading What causes java.lang.IncompatibleClassChangeError? it looks like IncompatibleClassChangeError - Means I probably have conflicting library versions on my classpath. I can't tell from the stack trace which class/library is being duplicated.

    My POM looks like so:

    <project xmlns="http://maven.apache.org/POM/4.0.0"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
                                 http://maven.apache.org/maven-v4_0_0.xsd">
    
      <properties>
        <wicket.version>1.5.11</wicket.version>
        <spring.version>3.2.6.RELEASE</spring.version>
        <project.build.sourceEncoding>windows-1252</project.build.sourceEncoding>
        <netbeans.hint.deploy.server>Tomcat60</netbeans.hint.deploy.server>
        <bootClassPath>
          ${env.JRE_6_HOME}\lib\rt.jar;${env.JAVA_HOME}\lib\tools.jar;${env.JRE_6_HOME}\lib\jsse.jar;
        </bootClassPath>
        <toolsDir>${env.JAVA_HOME}\lib</toolsDir>
        <jsseDir>${env.JAVA_HOME}\jre\lib</jsseDir>
        <m2Repository>${env.USERPROFILE}/.m2/repository</m2Repository>
      </properties>
    
      <dependencyManagement>
        <dependencies>
          <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>1.6.2</version>
          </dependency>
          <dependency>
            <groupId>org.apache.wicket</groupId>
            <artifactId>wicket</artifactId>
            <version>${wicket.version}</version>
          </dependency>
          <dependency>
            <groupId>org.apache.wicket</groupId>
            <artifactId>wicket-core</artifactId>
            <version>${wicket.version}</version>
          </dependency>
          <dependency>
            <groupId>org.apache.wicket</groupId>
            <artifactId>wicket-extensions</artifactId>
            <version>${wicket.version}</version>
          </dependency>
          <dependency>
            <groupId>org.apache.wicket</groupId>
            <artifactId>wicket-datetime</artifactId>
            <version>${wicket.version}</version>
          </dependency>
          <dependency>
            <groupId>org.apache.wicket</groupId>
            <artifactId>wicket-spring</artifactId>
            <version>${wicket.version}</version>
           </dependency>
          <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</artifactId>
            <version>${spring.version}</version>
          </dependency>
          <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-beans</artifactId>
            <version>${spring.version}</version>
          </dependency>
          <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-aop</artifactId>
            <version>${spring.version}</version>
          </dependency>
          <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>${spring.version}</version>
          </dependency>
          <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-web</artifactId>
            <version>${spring.version}</version>
          </dependency>
          <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-expression</artifactId>
            <version>${spring.version}</version>
          </dependency>
          <dependency>
            <groupId>org.springframework.security</groupId>
            <artifactId>spring-security-web</artifactId>
            <version>3.2.0.RELEASE</version>
          </dependency>
          <dependency>
            <groupId>org.springframework.security</groupId>
            <artifactId>spring-security-config</artifactId>
            <version>3.2.0.RELEASE</version>
          </dependency>
          <dependency>
            <groupId>commons-collections</groupId>
            <artifactId>commons-collections</artifactId>
            <version>3.2</version>
          </dependency>
        </dependencies>
      </dependencyManagement>
    
      <dependencies>
        <!-- shared look/functionality -->
        <dependency>
          <groupId>us.ak.state.revenue.cssd</groupId>
          <artifactId>myAlaska</artifactId>
          <version>1.6.2</version>
          <exclusions>
            <exclusion>
              <groupId>org.apache.wicket</groupId>
              <artifactId>wicket-datetime</artifactId>
            </exclusion>
            <exclusion>
              <groupId>commons-collections</groupId>
              <artifactId>commons-collections</artifactId>
            </exclusion>
          </exclusions>
        </dependency>
        <dependency>
          <groupId>us.ak.state.revenue.cssd</groupId>
          <artifactId>doc</artifactId>
          <version>1.6.2</version>
        </dependency>
    
        <!-- WICKET DEPENDENCIES -->
        <dependency>
          <groupId>org.apache.wicket</groupId>
          <artifactId>wicket-datetime</artifactId>
          <version>${wicket.version}</version>
          <exclusions>
            <exclusion>
              <groupId>org.apache.wicket</groupId>
              <artifactId>wicket-core</artifactId>
            </exclusion>
          </exclusions>
        </dependency>
    
        <!-- JUNIT DEPENDENCY FOR TESTING -->
        <dependency>
          <groupId>junit</groupId>
          <artifactId>junit</artifactId>
          <version>4.11</version>
          <scope>test</scope>
        </dependency>
        <dependency>
          <groupId>javax.servlet</groupId>
          <artifactId>servlet-api</artifactId>
          <version>2.4</version>
          <scope>provided</scope>
        </dependency>
    
        <!-- SPRING Testing -->
        <dependency>
          <groupId>org.springframework</groupId>
          <artifactId>spring-test</artifactId>
          <version>${spring.version}</version>
          <scope>test</scope>
        </dependency>
        <dependency>
          <groupId>org.springframework</groupId>
          <artifactId>spring-web</artifactId>
          <version>${spring.version}</version>
          <!-- TODO: once unit tests work test if this should be test scoped -->
        </dependency>
    
        <!-- Make Sure CXF starts properly -->
        <dependency>
          <groupId>org.springframework.security</groupId>
          <artifactId>spring-security-config</artifactId>
          <version>3.2.0.RELEASE</version>
          <scope>compile</scope>
        </dependency>
    
        <dependency>
          <groupId>org.springframework.security</groupId>
          <artifactId>spring-security-web</artifactId>
          <version>3.2.0.RELEASE</version>
        </dependency>
    
        <!-- Spring Transactional Support -->
        <dependency>
          <groupId>org.springframework</groupId>
          <artifactId>spring-orm</artifactId>
          <version>${spring.version}</version>
        </dependency>
        <dependency>
          <groupId>org.springframework</groupId>
          <artifactId>spring-aop</artifactId>
          <version>${spring.version}</version>
        </dependency>
        <dependency>
          <groupId>org.aspectj</groupId>
          <artifactId>aspectjweaver</artifactId>
          <version>1.7.2</version>
        </dependency>
    
        <!-- LDAP Authentication -->
        <dependency>
          <groupId>com.novell.ldap</groupId>
          <artifactId>jldap</artifactId>
          <version>4.3</version>
        </dependency>
    
        <!-- PDF report Generation -->
        <dependency>
          <groupId>com.lowagie</groupId>
          <artifactId>itext</artifactId>
          <version>2.0.4</version>
        </dependency>
    
        <!-- email -->
        <dependency>
          <groupId>javax.mail</groupId>
          <artifactId>mail</artifactId>
          <version>1.5.0-b01</version>
        </dependency>
        <dependency>
          <groupId>com.sun</groupId>
          <artifactId>jsse</artifactId>
          <version>1.6.0_21</version>
          <scope>system</scope>
          <systemPath>${env.JRE_6_HOME}\lib\jsse.jar</systemPath>
        </dependency>
    
        <!-- Mainframe/Broker -->
        <dependency>
          <groupId>com.softwareAG.entirex</groupId>
          <artifactId>entirex-runtime</artifactId>
          <version>9.5.1</version>
        </dependency>
    
          <!-- Unknown / Miscl -->
        <dependency>
          <groupId>commons-collections</groupId>
          <artifactId>commons-collections</artifactId>
          <version>3.2</version>
          </dependency>
        <dependency>
          <groupId>commons-dbcp</groupId>
          <artifactId>commons-dbcp</artifactId>
          <version>1.2.2</version>
        </dependency>
    
        </dependencies>
    
      <build>
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>2.0.2</version>
            <configuration>
              <source>1.6</source>
              <target>1.6</target>
              <encoding>${project.build.sourceEncoding}</encoding>
             <compilerArguments>
               <bootclasspath>
                 ${bootClassPath};
               </bootclasspath>
               <endorseddirs>
                 ${m2Repository}/javax/xml/bind/jaxb-api/2.2.6/;${m2Repository}/org/apache/cxf/cxf-rt-frontend-jaxws/2.7.5/;${toolsDir};${jsseDir};
               </endorseddirs>
             </compilerArguments>
              <compilerArgument> -Xlint:unchecked </compilerArgument>
              <showDeprecation>true</showDeprecation>
              <showWarnings>true</showWarnings>
             <optimize>true</optimize>
             <debug>true</debug>
            </configuration>
          </plugin>
          <plugin>
           <groupId>com.atlassian.maven.plugins</groupId>
           <artifactId>maven-clover2-plugin</artifactId>
           <version>3.2.2</version>
           <configuration>
             <!-- License info removed -->
             <excludes>
               <exclude>**/SessionFactoryBean*.java</exclude>
             </excludes>
             <cloverDatabase>${project.basedir}/.clover/db</cloverDatabase>
           </configuration>
           <executions>
             <execution>
               <id>clover</id>
               <phase>generate-sources</phase>
               <goals>
                 <goal>instrument</goal>
               </goals>
             </execution>
           </executions>
         </plugin>
          <plugin>
            <!-- moves the test results outside of clover-->
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>2.10</version>
            <configuration>
             <reportsDirectory>
               ${project.build.directory}/surefire-reports
             </reportsDirectory>
           </configuration>
          </plugin>
        </plugins>
      </build>    
    
    </project>
    

    MyAlaska is a shared library that another project is successfully using,
    with the following dependencies:

    <!-- another shared jar sits here that pulls in Wicket,Look-feel stuff -->
    
    
    <!-- ADFS attempt #2, this time with WS-Federation/SAML support -->
    <dependency>
      <groupId>org.apache.cxf</groupId>
      <artifactId>cxf-rt-frontend-jaxws</artifactId>
      <version>2.7.5</version>
    </dependency>
    <dependency>
      <groupId>org.apache.cxf</groupId>
      <artifactId>cxf-rt-transports-http-hc</artifactId>
      <version>2.7.5</version>
    </dependency>
    <dependency>
      <groupId>javax.xml.bind</groupId>
      <artifactId>jaxb-api</artifactId>
      <version>2.2.6</version>
    </dependency>
    <!--https WS stuff-->
    <dependency>
      <groupId>org.apache.cxf</groupId>
      <artifactId>cxf-rt-rs-security-sso-saml</artifactId>
      <version>2.7.5</version>
    </dependency>
    <!-- specifically adds SAML/federation to the stack -->
    <dependency>
      <groupId>org.apache.cxf.fediz</groupId>
      <artifactId>fediz-core</artifactId>
      <version>1.1.0</version>
    </dependency>
    <dependency>
      <groupId>org.apache.cxf.fediz</groupId>
      <artifactId>fediz-cxf</artifactId>
      <version>1.1.0</version>
    </dependency>
    <dependency>
      <groupId>org.apache.cxf.fediz</groupId>
      <artifactId>fediz-spring</artifactId>
      <version>1.1.0</version>
    </dependency>
    
    <!-- Spring Security integration-->
    <dependency>
      <groupId>org.springframework.security</groupId>
      <artifactId>spring-security-web</artifactId>
      <version>3.1.3.RELEASE</version>
    </dependency>
    
    <dependency>
      <groupId>org.apache.wicket</groupId>
      <artifactId>wicket-spring</artifactId>
    </dependency>
    
    <!-- configuration update "magic" -->
    <dependency>
      <groupId>commons-configuration</groupId>
      <artifactId>commons-configuration</artifactId>
      <version>1.9</version>
    </dependency>
    
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.11</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-test</artifactId>
      <version>3.0.7.RELEASE</version>
      <scope>test</scope>
    </dependency>
    

    If you're still here, thanks for reading.
    What am I doing wrong?
    Why won't CXF/Spring start, and how do I fix it?

    UPDATE:
    After running the debugger the offending class appears to be: org.apache.cxf.ws.policy.AssertionBuilderRegistryImpl
    which resides in cxf-rt-ws-policy-2.7.5
    As far as I can tell though that's the only place for that jar and It's only included once.

    JHades Update
    When I initially ran the report Log4J and Log4J-extras were overlapping, so was JavaMail-1.5 and geronimo-javamail_1.4_spec. I've resolved those uses.

    report results:

    >>>> Jar overlap report: 
    
    
    Total number of classes with more than one version: 0 
    

    Both Jhades and mvn dependency:tree -Ddetail=true inidicate that cxf-rt-ws-policy is 2.7.5 just like every other cxf jar version.

  • Nicholas DiPiazza
    Nicholas DiPiazza over 8 years
    a tool called "TattleTale" does that same thing (from jboss)
  • lordyoum
    lordyoum over 7 years
    Use "maven dependency:tree" to find which dependency uses neethi, then exclude it this way : <dependency> <groupId>org.apache.axis2</groupId> <artifactId>axis2-kernel</artifactId> <version>1.3</version> <exclusions> <exclusion><groupId>javax.servlet</groupId><artifactId>servl‌​et-api</artifactId><‌​/exclusion> <exclusion><groupId>org.apache.neethi</groupId><artifact‌​Id>neethi</artifactI‌​d></exclusion> </exclusions> </dependency>
  • Ram
    Ram about 3 years
    Re-verify CXF version in maven dependency and the one you added in pom.xml