2

I was using Spring 4 and Maven 3 for my new project. However I got the following error. I tried removing all cached libraries from ~/.m2/repository/ but it didn't help.

Here is the exception when running mvn clean install:

Apr 29, 2014 4:41:21 PM org.springframework.test.context.TestContextManager prepareTestInstance
SEVERE: Caught exception while allowing TestExecutionListener [org.springframework.test.context.support.DependencyInjectionTestExecutionListener@53ce669e] to prepare test instance [com.xxx.SmokeTest@13b33a0e]
java.lang.IllegalStateException: Failed to load ApplicationContext
    at org.springframework.test.context.CacheAwareContextLoaderDelegate.loadContext(CacheAwareContextLoaderDelegate.java:99)
    at org.springframework.test.context.DefaultTestContext.getApplicationContext(DefaultTestContext.java:101)
    at org.springframework.test.context.support.DependencyInjectionTestExecutionListener.injectDependencies(DependencyInjectionTestExecutionListener.java:109)
    at org.springframework.test.context.support.DependencyInjectionTestExecutionListener.prepareTestInstance(DependencyInjectionTestExecutionListener.java:75)
    at org.springframework.test.context.TestContextManager.prepareTestInstance(TestContextManager.java:319)
    at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.createTest(SpringJUnit4ClassRunner.java:212)
    at org.springframework.test.context.junit4.SpringJUnit4ClassRunner$1.runReflectiveCall(SpringJUnit4ClassRunner.java:289)
    at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
    at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.methodBlock(SpringJUnit4ClassRunner.java:291)
    at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:232)
    at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:89)
    at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)
    at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)
    at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)
    at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)
    at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)
    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:236)
    at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:175)
    at org.apache.maven.surefire.junit4.JUnit4TestSet.execute(JUnit4TestSet.java:53)
    at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:123)
    at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:104)
    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.apache.maven.surefire.util.ReflectionUtils.invokeMethodWithArray(ReflectionUtils.java:164)
    at org.apache.maven.surefire.booter.ProviderFactory$ProviderProxy.invoke(ProviderFactory.java:110)
    at org.apache.maven.surefire.booter.SurefireStarter.invokeProvider(SurefireStarter.java:175)
    at org.apache.maven.surefire.booter.SurefireStarter.runSuitesInProcessWhenForked(SurefireStarter.java:107)
    at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:68)
Caused by: org.springframework.beans.factory.BeanDefinitionStoreException: Unexpected exception parsing XML document from URL [file:src/main/webapp/WEB-INF/applicationContext.xml]; nested exception is java.lang.NoSuchMethodError: org.springframework.beans.factory.support.DefaultListableBeanFactory.getDependencyComparator()Ljava/util/Comparator;
    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:412)
    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:334)
    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:302)
    at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:174)
    at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:209)
    at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:180)
    at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:243)
    at org.springframework.test.context.support.AbstractGenericContextLoader.loadBeanDefinitions(AbstractGenericContextLoader.java:235)
    at org.springframework.test.context.support.AbstractGenericContextLoader.loadContext(AbstractGenericContextLoader.java:118)
    at org.springframework.test.context.support.AbstractGenericContextLoader.loadContext(AbstractGenericContextLoader.java:60)
    at org.springframework.test.context.support.AbstractDelegatingSmartContextLoader.delegateLoading(AbstractDelegatingSmartContextLoader.java:100)
    at org.springframework.test.context.support.AbstractDelegatingSmartContextLoader.loadContext(AbstractDelegatingSmartContextLoader.java:250)
    at org.springframework.test.context.CacheAwareContextLoaderDelegate.loadContextInternal(CacheAwareContextLoaderDelegate.java:64)
    at org.springframework.test.context.CacheAwareContextLoaderDelegate.loadContext(CacheAwareContextLoaderDelegate.java:91)
    ... 31 more
Caused by: java.lang.NoSuchMethodError: org.springframework.beans.factory.support.DefaultListableBeanFactory.getDependencyComparator()Ljava/util/Comparator;
    at org.springframework.context.annotation.AnnotationConfigUtils.registerAnnotationConfigProcessors(AnnotationConfigUtils.java:190)
    at org.springframework.context.annotation.AnnotationConfigBeanDefinitionParser.parse(AnnotationConfigBeanDefinitionParser.java:47)
    at org.springframework.beans.factory.xml.NamespaceHandlerSupport.parse(NamespaceHandlerSupport.java:73)
    at org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.parseCustomElement(BeanDefinitionParserDelegate.java:1438)
    at org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.parseCustomElement(BeanDefinitionParserDelegate.java:1428)
    at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.parseBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:185)
    at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.doRegisterBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:139)
    at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.registerBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:108)
    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.registerBeanDefinitions(XmlBeanDefinitionReader.java:493)
    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:390)
    ... 44 more
Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 0.621 sec <<< FAILURE!

Here is the maven repo settings and dependencies:

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <spring.version>4.0.3.RELEASE</spring.version>
    <spring.oauth2.version>1.0.5.RELEASE</spring.oauth2.version>
    <spring.security.version>3.2.3.RELEASE</spring.security.version>
    <spring.jaxws.version>1.9</spring.jaxws.version>
    <jax-ws.version>2.2.9-b14002</jax-ws.version>
    <jee.servlet.version>2.5</jee.servlet.version>
    <junit.version>4.7</junit.version>
    <commons-lang.version>2.4</commons-lang.version>
    <commons-io.version>2.0.1</commons-io.version>
    <gson.version>1.6</gson.version>
    <maven-compiler-plugin.version>1.6</maven-compiler-plugin.version>
    <maven-j2ee-plugin.version>1.5.1</maven-j2ee-plugin.version>
    <mockito.version>1.8.5</mockito.version>
</properties>

<dependencies>
    <!-- Spring framework -->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-core</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-aop</artifactId>
        <version>${spring.version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-test</artifactId>
        <version>${spring.version}</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>com.sun.xml.ws</groupId>
        <artifactId>jaxws-rt</artifactId>
        <version>${jax-ws.version}</version>
    </dependency>
    <dependency>
        <groupId>com.google.guava</groupId>
        <artifactId>guava</artifactId>
        <version>17.0</version>
    </dependency>
    <!--dependency>
        <groupId>org.apache.geronimo.configs</groupId>
        <artifactId>aspectj</artifactId>
        <version>2.2.1</version>
    </dependency-->
    <dependency>
        <groupId>org.aspectj</groupId>
        <artifactId>aspectjrt</artifactId>
        <version>1.8.0</version>
    </dependency>

    <dependency>
        <groupId>org.aspectj</groupId>
        <artifactId>aspectjweaver</artifactId>
        <version>1.8.0</version>
    </dependency>
</dependencies>

<build>
    <pluginManagement>
        <plugins>
            <plugin>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>2.3.2</version>
                <configuration>
                    <source>${maven-compiler-plugin.version}</source>
                    <target>${maven-compiler-plugin.version}</target>
                </configuration>
            </plugin>
        </plugins>
    </pluginManagement>
</build>

<pluginRepositories>
    <pluginRepository>
        <id>central</id>
        <name>Maven Plugin Repository</name>
        <url>http://repo1.maven.org/maven3</url>
        <layout>default</layout>
        <snapshots>
            <enabled>false</enabled>
        </snapshots>
        <releases>
            <updatePolicy>never</updatePolicy>
        </releases>
    </pluginRepository>
    <pluginRepository>
        <id>xx_local</id>
        <name>xx Local</name>
        <url>http://maven.xx.com:80/nexus/content/groups/public</url>
        <layout>default</layout>
        <snapshots>
            <enabled>true</enabled>
        </snapshots>
        <releases>
            <updatePolicy>never</updatePolicy>
        </releases>
    </pluginRepository>
    <pluginRepository>
        <id>apache-snapshots</id>
        <name>Apache Snapshot Repository</name>
        <url>https://repository.apache.org/content/groups/staging/</url>
        <releases>
            <enabled>true</enabled>
        </releases>
        <snapshots>
            <enabled>true</enabled>
        </snapshots>
    </pluginRepository>
    <pluginRepository>
        <id>codehaus.snapshots</id>
        <url>http://snapshots.repository.codehaus.org</url>
        <releases>
            <enabled>false</enabled>
        </releases>
        <snapshots>
            <enabled>true</enabled>
        </snapshots>
    </pluginRepository>
</pluginRepositories>


<repositories>

    <repository>
        <id>XX</id>
        <name>XX Maven Repository</name>
        <url>http://maven.xx.com:80/nexus/content/groups/public</url>
        <layout>default</layout>
        <snapshots>
            <enabled>true</enabled>
            <updatePolicy>daily</updatePolicy>
        </snapshots>
    </repository>

    <repository>
        <id>gson</id>
        <url>http://google-gson.googlecode.com/svn/mavenrepo</url>
        <snapshots>
            <enabled>true</enabled>
        </snapshots>
        <releases>
            <enabled>true</enabled>
        </releases>
    </repository>

    <repository>
        <id>tokyotyrant-java</id>
        <url>http://tokyotyrant-java.googlecode.com/svn/maven/repository</url>
        <snapshots>
            <enabled>true</enabled>
        </snapshots>
    </repository>

    <repository>
        <id>mockito-all</id>
        <url>http://repo2.maven.org/maven2/org/mockito/mockito-all</url>
    </repository>

    <repository>
        <id>http-client</id>
        <url>http://mirrors.ibiblio.org/pub/mirrors/maven2/</url>
    </repository>

    <repository>
        <id>repository.springframework.maven.milestone</id>
        <name>Spring Framework Maven Milestone Repository</name>
        <url>http://maven.springframework.org/milestone</url>
        <snapshots>
            <enabled>true</enabled>
            <updatePolicy>never</updatePolicy>
        </snapshots>
    </repository>

    <repository>
        <id>plexus snapshots</id>
        <url>https://oss.sonatype.org/content/repositories/plexus-snapshots/</url>
        <releases>
            <enabled>false</enabled>
        </releases>
        <snapshots>
            <enabled>true</enabled>
        </snapshots>
    </repository>

    <repository>
        <id>maven central</id>
        <url>repo1.maven.org/maven2/</url>
        <releases>
            <enabled>true</enabled>
        </releases>
        <snapshots>
            <enabled>false</enabled>
        </snapshots>
    </repository>

    <repository>
        <id>repository.jboss.org</id>
        <url>https://repository.jboss.org/nexus/content/repositories/releases/</url>
        <snapshots>
            <enabled>false</enabled>
        </snapshots>
    </repository>

    <repository>
        <id>couch base</id>
        <url>http://files.couchbase.com/maven2/</url>
        <snapshots>
            <enabled>false</enabled>
        </snapshots>
    </repository>

    <repository>
        <id>java.net</id>
        <url>http://download.java.net/maven/2</url>
    </repository>

    <repository>
        <id>spring-milestone</id>
        <name>Spring Framework Milestone Repository</name>
        <url>http://maven.springframework.org/milestone</url>
    </repository>

    <repository>
        <id>spring-release</id>
        <name>Spring Framework Release Repository</name>
        <url>http://maven.springframework.org/release</url>
    </repository>

    <repository>
        <id>spring-snnapshot</id>
        <name>Spring Maven SNAPSHOT Repository</name>
        <url>http://maven.springframework.org/snapshot</url>
    </repository>

</repositories>


<distributionManagement>
    <repository>
        <id>xx_local</id>
        <url>http://maven.xx.com:80/nexus/content/repositories/releases</url>
    </repository>
    <snapshotRepository>
        <id>xx_local</id>
        <url>http://maven.xx.com:80/nexus/content/repositories/snapshots</url>
        <uniqueVersion>false</uniqueVersion>
    </snapshotRepository>
</distributionManagement>
  • I intentionally changed some business names in the config and URLs for privacy considerations.
xshi
  • 81
  • 1
  • 6
  • 1
    Is that the entire pom? You are using JUnit, but I don't see it in your pom. – Andrei Stefan Apr 30 '14 at 05:16
  • 2
    In general this comes from conflicting jar versions on your classpath. Do `mvn dependency:tree` and see which jars are actually on your classpath. Post that list here. – M. Deinum Apr 30 '14 at 05:18
  • Yes it turned out to be due to conflict jars buried in some spring dependencies. Spring-security-oauth2 1.0.5 relies on spring-asm and spring-context-support 3.1.3 which are in conflict with Spring 4 libs. After excluding them problem is fixed. – xshi Apr 30 '14 at 22:10

2 Answers2

2

Yes it turned out to be due to conflict jars buried in some spring dependencies. Spring-security-oauth2 1.0.5 relies on spring-asm and spring-context-support 3.1.3 which are in conflict with Spring 4 libs. After excluding them problem is fixed.

xshi
  • 81
  • 1
  • 6
0

This may be a long shot but from personal experience last time i had this error it was due to the key point:

java.lang.IllegalStateException: Failed to load ApplicationContext

I had a test case that didn't have ApplicationContext in it and thus was causing the compilation to fail with that above.

Check if you have any test classes that are missing a ApplicationContext (as i said long shot). If they are the add it otherwise we will need to dig more into this problem.

Good luck

Aeseir
  • 7,754
  • 10
  • 58
  • 107