Spring-boot: Possibly broken Mongo DB autoconfigure using 2.0.0.BUILD-SNAPSHOT

Created on 10 Apr 2017  Â·  11Comments  Â·  Source: spring-projects/spring-boot

I don't know whether this is an issue with spring-boot or spring-data-mongodb but a recent update broke my simple test app. Configuration is out of the box Mongo DB. At startup ontext initialization throws Caused by: java.lang.NoSuchMethodError: org.springframework.core.GenericTypeResolver.getTypeVariableMap(Ljava/lang/Class;)Ljava/util/Map.

Version: [spring-boot-2.0.0.BUILD-20170410.123845-510.jar:2.0.0.BUILD-SNAPSHOT]

org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'mongoTemplate' defined in class path resource [org/springframework/boot/autoconfigure/data/mongo/MongoDataAutoConfiguration.class]: Unsatisfied dependency expressed through method 'mongoTemplate' parameter 1; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'mappingMongoConverter' defined in class path resource [org/springframework/boot/autoconfigure/data/mongo/MongoDataAutoConfiguration.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.data.mongodb.core.convert.MappingMongoConverter]: Factory method 'mappingMongoConverter' threw exception; nested exception is java.lang.NoSuchMethodError: org.springframework.core.GenericTypeResolver.getTypeVariableMap(Ljava/lang/Class;)Ljava/util/Map;
    at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:748) ~[spring-beans-5.0.0.BUILD-20170410.143930-90.jar:5.0.0.BUILD-SNAPSHOT]
    at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:466) ~[spring-beans-5.0.0.BUILD-20170410.143930-90.jar:5.0.0.BUILD-SNAPSHOT]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1246) ~[spring-beans-5.0.0.BUILD-20170410.143930-90.jar:5.0.0.BUILD-SNAPSHOT]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1093) ~[spring-beans-5.0.0.BUILD-20170410.143930-90.jar:5.0.0.BUILD-SNAPSHOT]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:534) ~[spring-beans-5.0.0.BUILD-20170410.143930-90.jar:5.0.0.BUILD-SNAPSHOT]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:491) ~[spring-beans-5.0.0.BUILD-20170410.143930-90.jar:5.0.0.BUILD-SNAPSHOT]
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:302) ~[spring-beans-5.0.0.BUILD-20170410.143930-90.jar:5.0.0.BUILD-SNAPSHOT]
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230) ~[spring-beans-5.0.0.BUILD-20170410.143930-90.jar:5.0.0.BUILD-SNAPSHOT]
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:298) ~[spring-beans-5.0.0.BUILD-20170410.143930-90.jar:5.0.0.BUILD-SNAPSHOT]
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:193) ~[spring-beans-5.0.0.BUILD-20170410.143930-90.jar:5.0.0.BUILD-SNAPSHOT]
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:751) ~[spring-beans-5.0.0.BUILD-20170410.143930-90.jar:5.0.0.BUILD-SNAPSHOT]
    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:865) ~[spring-context-5.0.0.BUILD-20170410.143930-90.jar:5.0.0.BUILD-SNAPSHOT]
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:541) ~[spring-context-5.0.0.BUILD-20170410.143930-90.jar:5.0.0.BUILD-SNAPSHOT]
    at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:122) ~[spring-boot-2.0.0.BUILD-20170410.123845-510.jar:2.0.0.BUILD-SNAPSHOT]
    at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:809) [spring-boot-2.0.0.BUILD-20170410.123845-510.jar:2.0.0.BUILD-SNAPSHOT]
    at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:404) [spring-boot-2.0.0.BUILD-20170410.123845-510.jar:2.0.0.BUILD-SNAPSHOT]
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:347) [spring-boot-2.0.0.BUILD-20170410.123845-510.jar:2.0.0.BUILD-SNAPSHOT]
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1263) [spring-boot-2.0.0.BUILD-20170410.123845-510.jar:2.0.0.BUILD-SNAPSHOT]
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1252) [spring-boot-2.0.0.BUILD-20170410.123845-510.jar:2.0.0.BUILD-SNAPSHOT]
    at se.reforce.reexecute.ReExecuteWebApplication.main(ReExecuteWebApplication.java:10) [classes/:na]
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_102]
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_102]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_102]
    at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_102]
    at org.springframework.boot.devtools.restart.RestartLauncher.run(RestartLauncher.java:49) [spring-boot-devtools-2.0.0.BUILD-20170410.123845-511.jar:2.0.0.BUILD-SNAPSHOT]
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'mappingMongoConverter' defined in class path resource [org/springframework/boot/autoconfigure/data/mongo/MongoDataAutoConfiguration.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.data.mongodb.core.convert.MappingMongoConverter]: Factory method 'mappingMongoConverter' threw exception; nested exception is java.lang.NoSuchMethodError: org.springframework.core.GenericTypeResolver.getTypeVariableMap(Ljava/lang/Class;)Ljava/util/Map;
    at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:598) ~[spring-beans-5.0.0.BUILD-20170410.143930-90.jar:5.0.0.BUILD-SNAPSHOT]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1246) ~[spring-beans-5.0.0.BUILD-20170410.143930-90.jar:5.0.0.BUILD-SNAPSHOT]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1093) ~[spring-beans-5.0.0.BUILD-20170410.143930-90.jar:5.0.0.BUILD-SNAPSHOT]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:534) ~[spring-beans-5.0.0.BUILD-20170410.143930-90.jar:5.0.0.BUILD-SNAPSHOT]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:491) ~[spring-beans-5.0.0.BUILD-20170410.143930-90.jar:5.0.0.BUILD-SNAPSHOT]
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:302) ~[spring-beans-5.0.0.BUILD-20170410.143930-90.jar:5.0.0.BUILD-SNAPSHOT]
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230) ~[spring-beans-5.0.0.BUILD-20170410.143930-90.jar:5.0.0.BUILD-SNAPSHOT]
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:298) ~[spring-beans-5.0.0.BUILD-20170410.143930-90.jar:5.0.0.BUILD-SNAPSHOT]
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:198) ~[spring-beans-5.0.0.BUILD-20170410.143930-90.jar:5.0.0.BUILD-SNAPSHOT]
    at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:250) ~[spring-beans-5.0.0.BUILD-20170410.143930-90.jar:5.0.0.BUILD-SNAPSHOT]
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1128) ~[spring-beans-5.0.0.BUILD-20170410.143930-90.jar:5.0.0.BUILD-SNAPSHOT]
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1056) ~[spring-beans-5.0.0.BUILD-20170410.143930-90.jar:5.0.0.BUILD-SNAPSHOT]
    at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:833) ~[spring-beans-5.0.0.BUILD-20170410.143930-90.jar:5.0.0.BUILD-SNAPSHOT]
    at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:740) ~[spring-beans-5.0.0.BUILD-20170410.143930-90.jar:5.0.0.BUILD-SNAPSHOT]
    ... 24 common frames omitted
Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.data.mongodb.core.convert.MappingMongoConverter]: Factory method 'mappingMongoConverter' threw exception; nested exception is java.lang.NoSuchMethodError: org.springframework.core.GenericTypeResolver.getTypeVariableMap(Ljava/lang/Class;)Ljava/util/Map;
    at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:189) ~[spring-beans-5.0.0.BUILD-20170410.143930-90.jar:5.0.0.BUILD-SNAPSHOT]
    at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:587) ~[spring-beans-5.0.0.BUILD-20170410.143930-90.jar:5.0.0.BUILD-SNAPSHOT]
    ... 37 common frames omitted
Caused by: java.lang.NoSuchMethodError: org.springframework.core.GenericTypeResolver.getTypeVariableMap(Ljava/lang/Class;)Ljava/util/Map;
    at org.springframework.data.util.ClassTypeInformation.getTypeVariableMap(ClassTypeInformation.java:129) ~[spring-data-commons-2.0.0.BUILD-20170410.151338-20.jar:na]
    at org.springframework.data.util.ClassTypeInformation.getTypeVariableMap(ClassTypeInformation.java:117) ~[spring-data-commons-2.0.0.BUILD-20170410.151338-20.jar:na]
    at org.springframework.data.util.ClassTypeInformation.<init>(ClassTypeInformation.java:106) ~[spring-data-commons-2.0.0.BUILD-20170410.151338-20.jar:na]
    at org.springframework.data.util.ClassTypeInformation.<clinit>(ClassTypeInformation.java:47) ~[spring-data-commons-2.0.0.BUILD-20170410.151338-20.jar:na]
    at org.springframework.data.mongodb.core.convert.DefaultMongoTypeMapper.<clinit>(DefaultMongoTypeMapper.java:55) ~[spring-data-mongodb-2.0.0.BUILD-20170410.151501-24.jar:na]
    at org.springframework.data.mongodb.core.convert.MappingMongoConverter.<init>(MappingMongoConverter.java:122) ~[spring-data-mongodb-2.0.0.BUILD-20170410.151501-24.jar:na]
    at org.springframework.boot.autoconfigure.data.mongo.MongoDataAutoConfiguration.mappingMongoConverter(MongoDataAutoConfiguration.java:111) ~[spring-boot-autoconfigure-2.0.0.BUILD-20170410.123845-511.jar:2.0.0.BUILD-SNAPSHOT]
    at org.springframework.boot.autoconfigure.data.mongo.MongoDataAutoConfiguration$$EnhancerBySpringCGLIB$$645cc270.CGLIB$mappingMongoConverter$2(<generated>) ~[spring-boot-autoconfigure-2.0.0.BUILD-20170410.123845-511.jar:2.0.0.BUILD-SNAPSHOT]
    at org.springframework.boot.autoconfigure.data.mongo.MongoDataAutoConfiguration$$EnhancerBySpringCGLIB$$645cc270$$FastClassBySpringCGLIB$$c6b6ca72.invoke(<generated>) ~[spring-boot-autoconfigure-2.0.0.BUILD-20170410.123845-511.jar:2.0.0.BUILD-SNAPSHOT]
    at org.springframework.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:228) ~[spring-core-5.0.0.BUILD-20170410.143930-90.jar:5.0.0.BUILD-SNAPSHOT]
    at org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.intercept(ConfigurationClassEnhancer.java:358) ~[spring-context-5.0.0.BUILD-20170410.143930-90.jar:5.0.0.BUILD-SNAPSHOT]
    at org.springframework.boot.autoconfigure.data.mongo.MongoDataAutoConfiguration$$EnhancerBySpringCGLIB$$645cc270.mappingMongoConverter(<generated>) ~[spring-boot-autoconfigure-2.0.0.BUILD-20170410.123845-511.jar:2.0.0.BUILD-SNAPSHOT]
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_102]
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_102]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_102]
    at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_102]
    at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:162) ~[spring-beans-5.0.0.BUILD-20170410.143930-90.jar:5.0.0.BUILD-SNAPSHOT]
    ... 38 common frames omitted
duplicate

Most helpful comment

Lesson Learned... Nothing in personal, But I´ll never in my life work targeting directly for snapshots...

All 11 comments

Found this issue because I'm experiencing a similar problem with the same error message but without the use of MongoDB. A previously working project now fails to start after dependency updates, no other changes.

Removing the spring-boot-starter-data-jpa dependency gets me past the initial error so I suspect something in the build snapshot for that is breaking.

This is due to a breaking change in Spring Framework. Keep an eye on https://github.com/spring-projects/spring-data-build/issues/331.

FTR — I've filed this ticket against Spring Framework to ask for reintroduction of the removed methods.

https://github.com/spring-projects/spring-framework/commit/e5fdd4cd1de76303842e47646213054d25242f4f#diff-93fb14870759942a1a66001341231e18 has just commited and so spring-data-commons has broken...

Lesson Learned... Nothing in personal, But I´ll never in my life work targeting directly for snapshots...

Root issue resolved(-ish) - awesome response and prompt action, thanks @olivergierke and @wilkinsona!

As target dependencies are snapshots, all previous versions that I tested was suffering the same error. It would be nice to freeze final versions to not snapshot dependencies...

@victordfb @marcello1975 We'll freeze versions when we release a milestone but not before because we want to catch these errors early. M1 isn't too far away now.

I am getting this same error when using the '2.0.1.RELEASE' version..

@danmattsson @philwebb @wilkinsona

Here is my abbreviated pom.xml.

What version should I be using for spring-boot-starter-parent?

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.1.RELEASE</version>
    </parent>

    <properties>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
        <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-mongodb</artifactId>
        </dependency>
    </dependencies>

@nshergill we don't use the tracker for questions, please ask on StackOverflow. If you believe you've found a bug, create a separate issue with a sample that reproduces the problem.

Was this page helpful?
0 / 5 - 0 ratings

Related issues

philwebb picture philwebb  Â·  3Comments

prasenjit-net picture prasenjit-net  Â·  3Comments

Dasiu picture Dasiu  Â·  3Comments

shahid21st picture shahid21st  Â·  3Comments

hadrienk picture hadrienk  Â·  3Comments