SpringBoot BeanCreationException: Fehler beim Erstellen der Bean mit dem Namen 'requestMappingHandlerAdapter' Auslöser: java.lang.NoSuchFieldError: defaultInstance
Ich habe ein SpringBoot + Maven-Projekt mit JPA. Beim Versuch, die Anwendung auszuführen, wurde der folgende Fehlerstapel angezeigt.
org.springframework.beans.factory.BeanCreationException: Fehler beim Erstellen der Bean mit dem Namen 'requestMappingHandlerAdapter', der in der Klassenpfadressource [org / springframework / boot / autoconfigure / web / servlet / WebMvcAutoConfiguration definiert ist$EnableWebMvcConfiguration.class]: Invocation of init method failed; nested exception is java.lang.NoSuchFieldError: defaultInstance at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1794) ~[spring-beans-5.2.9.RELEASE.jar:5.2.9.RELEASE] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:594) ~[spring-beans-5.2.9.RELEASE.jar:5.2.9.RELEASE] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:516) ~[spring-beans-5.2.9.RELEASE.jar:5.2.9.RELEASE] at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean $ 0 (AbstractBeanFactory.java:324) ~ [spring-bean-5.2.9.RELEASE.jar: 5.2.9.RELEASE] unter org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton (DefaultSingletonBeanRegistry.java:234) ~ [spring-beans-5.2.9.RELEASE.jar: 5.2.9.RELEASE] unter org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean (AbstractBeanFactory.java:322) ~ [spring-bean-5.2.9 .RELEASE.jar: 5.2.9.RELEASE] unter org.springframework.beans.factory.support.AbstractBeanFactory.getBean (AbstractBeanFactory.java:202) ~ [spring-bean-5.2.9.RELEASE.jar: 5.2.9. RELEASE] unter org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons (DefaultListableBeanFactory.java:897) ~ [spring-bean-5.2.9.RELEASE.jar: 5.2.9.RELEASE] unter org.springframework.context. support.AbstractApplicationContext.finishBeanFactoryInitialization (AbstractApplicationContext.java:879) ~ [spring-context-5.2.9.RELEASE.jar: 5.2.9.RELEASE] unter org.springframework.context.support.AbstractApplicationContext .refresh (AbstractApplicationContext.java:551) ~ [spring-context-5.2.9.RELEASE.jar: 5.2.9.RELEASE] unter org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh (ServletWebServerApplicationContext.java: 143) ~ [spring-boot-2.3.4.RELEASE.jar: 2.3.4.RELEASE] unter org.springframework.boot.SpringApplication.refresh (SpringApplication.java:758) [spring-boot-2.3.4.RELEASE. jar: 2.3.4.RELEASE] unter org.springframework.boot.SpringApplication.refresh (SpringApplication.java:750) [spring-boot-2.3.4.RELEASE.jar: 2.3.4.RELEASE] unter org.springframework.boot .SpringApplication.refreshContext (SpringApplication.java:397) [spring-boot-2.3.4.RELEASE.jar: 2.3.4.RELEASE] unter org.springframework.boot.SpringApplication.run (SpringApplication.java:315) [spring- boot-2.3.4.RELEASE.jar: 2.3.4.RELEASE] unter org.springframework.boot.SpringApplication.run (SpringApplication.java:1237) [spring-boot-2.3.4.RELEASE.jar: 2.3.4. RELEASE] unter org.springframework.boot.SpringApplication.run (SpringApplication.java:1226) [s pring-boot-2.3.4.RELEASE.jar: 2.3.4.RELEASE] unter com.pasindu.dockerexample.DockerExampleApplication.main (DockerExampleApplication.java:14) [classes /: na] Auslöser: java.lang.NoSuchFieldError: defaultInstance at org.springframework.web.servlet.mvc.method.annotation.ServletCookieValueMethodArgumentResolver. (ServletCookieValueMethodArgumentResolver.java:40) ~ [spring-webmvc-5.2.9.RELEASE.jar: 5.2.9.RELASE. web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.getDefaultArgumentResolvers (RequestMappingHandlerAdapter.java:648) ~ [spring-webmvc-5.2.9.RELEASE.jar: 5.2.9.RELEASE] at org.springframework.web.servlet .method.annotation.RequestMappingHandlerAdapter.afterPropertiesSet (RequestMappingHandlerAdapter.java:561) ~ [spring-webmvc-5.2.9.RELEASE.jar: 5.2.9. AbstractAutowireCapableBeanFactory.java:1853) ~ [spring-bean-5.2.9.RELEASE.jar: 5.2.9.RELEASE] bei org.sp. ringframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean (AbstractAutowireCapableBeanFactory.java:1790) ~ [spring-bean-5.2.9.RELEASE.jar: 5.2.9.RELEASE] ... 17 allgemeine Frames weggelassen Prozess mit Exit-Code beendet 1
Unten ist meine pom.xml Datei.
<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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.4.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.demo</groupId>
<artifactId>docker-example</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>docker-example</name>
<description>Docker Example</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>5.2.8.RELEASE</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.12</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.18</version>
</dependency>
</dependencies>
<build>
<finalName>app</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
Irgendeine Idee, wie man das behebt?
Antworten
Die Lösung gefunden.
In meiner pom.xml gab es zwei Abhängigkeiten wie
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>5.2.8.RELEASE</version>
</dependency>
Ich habe die Spring-Web- Abhängigkeit entfernt, alle Maven-Plugins neu geladen und versucht, das Projekt erneut auszuführen.
Es war erfolgreich.
Das beschriebene Problem hängt mit Konflikten zwischen verschiedenen Maven-Abhängigkeiten zusammen. Ich hatte das gleiche Problem beim Versuch, die neueste Version von Spring Boot mit Apache Camel zu verwenden.
Nach der Analyse des Abhängigkeitsbaums stellte sich heraus, dass die Version von spring-webmvc 5.2.9 war, während alle anderen Spring-Abhängigkeiten von Version 5.2.8 waren.
In meinem Fall habe ich das Problem durch die Verwendung einer neueren Version von Camel-Spring-Boot-Abhängigkeiten (3.6.0 im Gegensatz zu zuvor verwendetem 3.5.0) gelöst.