SpringBoot BeanCreationException: Lỗi tạo bean với tên 'requestMappingHandlerAdapter' Do: java.lang.NoSuchFieldError: defaultInstance
Tôi có một dự án SpringBoot + Maven với JPA. Khi cố gắng chạy ứng dụng, tôi nhận được lỗi sau.
org.springframework.beans.factory.BeanCreationException: Lỗi khi tạo bean với tên 'requestMappingHandlerAdapter' được xác định trong tài nguyên đường dẫn lớp [org / springframework / boot / autoconfigure / web / servlet / WebMvcAutoConfiguration$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] tại org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton (DefaultSingletonBeanRegistry.java:234) ~ [spring-bean-5.2.9.RELEASE.jar: 5.2.9.RELEASE] tại org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean (AbstractBeanFactory.java:322) ~ [spring-bean-5.2.9 .RELEASE.jar: 5.2.9.RELEASE] tại org.springframework.beans.factory.support.AbstractBeanFactory.getBean (AbstractBeanFactory.java:202) ~ [spring-bean-5.2.9.RELEASE.jar: 5.2.9. RELEASE] tại org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons (DefaultListableBeanFactory.java:897) ~ [spring-bean-5.2.9.RELEASE.jar: 5.2.9.RELEASE] tại org.springframework.context. support.AbstractApplicationContext.finishBeanFactoryInitialization (AbstractApplicationContext.java:879) ~ [spring-context-5.2.9.RELEASE.jar: 5.2.9.RELEASE] tại org.springframework.context.support.AbstractApplicationContext .refresh (AbstractApplicationContext.java:551) ~ [spring-context-5.2.9.RELEASE.jar: 5.2.9.RELEASE] tại org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh (ServletavaWebServerApplication: 143) ~ [spring-boot-2.3.4.RELEASE.jar: 2.3.4.RELEASE] tại org.springframework.boot.SpringApplication.refresh (SpringApplication.java:758) [spring-boot-2.3.4.RELEASE. jar: 2.3.4.RELEASE] tại org.springframework.boot.SpringApplication.refresh (SpringApplication.java:750) [spring-boot-2.3.4.RELEASE.jar: 2.3.4.RELEASE] tại org.springframework.boot .SpringApplication.refreshContext (SpringApplication.java:397) [spring-boot-2.3.4.RELEASE.jar: 2.3.4.RELEASE] tại org.springframework.boot.SpringApplication.run (SpringApplication.java:315) [spring- boot-2.3.4.RELEASE.jar: 2.3.4.RELEASE] tại org.springframework.boot.SpringApplication.run (SpringApplication.java:1237) [spring-boot-2.3.4.RELEASE.jar: 2.3.4. RELEASE] tại org.springframework.boot.SpringApplication.run (SpringApplication.java:1226) [s pring-boot-2.3.4.RELEASE.jar: 2.3.4.RELEASE] tại com.pasindu.dockerexample.DockerExampleApplication.main (DockerExampleApplication.java:14) [class /: na] Do: java.lang.NoSuchFieldError: defaultInstance tại org.springframework.web.servlet.mvc.method.annotation.ServletCookieValueMethodArgumentResolver. (ServletCookieValueMethodArgumentResolver.java:40) ~ [spring-webmvc-5.2.9.RELEASE] tại org-webmvc-5.2.9.RELEASE tại 5.2.9. web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.getDefaultArgumentResolvers (RequestMappingHandlerAdapter.java:648) ~ [spring-webmvc-5.2.9.RELEASE.jar: 5.2.9.RELEASE] tại org.springvcframevlet .method.annotation.RequestMappingHandlerAdapter. AfterPropertiesSet (RequestMappingHandlerAdapter.java:561) ~ [spring-webmvc-5.2.9.RELEASE.jar: 5.2.9.RELEASE] tại org.springframework.beans.factory.support.AbstractinvokeFireCapableMsupport. AbstractAutowireCapableBeanFactory.java:1853) ~ [spring-bean-5.2.9.RELEASE.jar: 5.2.9.RELEASE] tại org.sp ringframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean (AbstractAutowireCapableBeanFactory.java:1790) ~ [spring-bean-5.2.9.RELEASE.jar: 5.2.9.RELEASE] ... 17 khung thông thường bị bỏ qua Quá trình kết thúc với mã thoát 1
Dưới đây là tệp pom.xml của tôi.
<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>
Bất kỳ ý tưởng về cách sửa chữa điều này?
Trả lời
Đã tìm ra giải pháp.
Trong pom.xml của tôi có hai phần phụ thuộc như
<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>
Những gì tôi đã làm là loại bỏ sự phụ thuộc vào spring-web và tải lại tất cả các Plugin của Maven và thử chạy lại dự án.
Nó đã thành công.
Vấn đề được mô tả có liên quan đến xung đột giữa các phụ thuộc Maven khác nhau. Tôi đã gặp sự cố tương tự khi cố gắng sử dụng phiên bản Spring Boot mới nhất với Apache Camel.
Sau khi phân tích cây phụ thuộc, hóa ra phiên bản của spring-webmvc là 5.2.9, trong khi tất cả các phụ thuộc mùa xuân khác là phiên bản 5.2.8.
Trong trường hợp của tôi, tôi đã giải quyết vấn đề bằng cách sử dụng phiên bản mới hơn của camel-spring-boot-dependencies (3.6.0, không giống như 3.5.0 được sử dụng trước đây).