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
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...
https://gist.github.com/jonathanborenstein/682c83d711cf9641913aa263d4dc0da7
I posted that in the JIRA issue as well.
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.
Most helpful comment
Lesson Learned... Nothing in personal, But I´ll never in my life work targeting directly for snapshots...