springboot 2.3.5로부터의 업그레이드.2.4.1로 릴리즈 - ClassNotFoundException: org.springframework.boot.context.properties.Configuration Bean Factory Metadata
springboot 버전 2.3.5에서 kotlin - gradle 프로젝트를 업그레이드하려고 합니다.2.4.1로 릴리즈합니다.springboot-2.4.1과 sping-cloud-Hockston의 버전이 일치하지 않는 것 같습니다.SR9.
build.gradle.kts 스니펫
plugins {
id("org.springframework.boot") version "2.4.1"
id("io.spring.dependency-management") version "1.0.10.RELEASE"
kotlin("jvm") version "1.4.10"
kotlin("plugin.spring") version "1.4.10"
kotlin("plugin.jpa") version "1.4.10"
kotlin("plugin.serialization") version "1.4.10"
idea
}
group = "com.xxx"
version = ""
java.sourceCompatibility = JavaVersion.VERSION_11
extra["springCloudVersion"] = "Hoxton.SR9"
val resilience4jVersion = "1.3.1"
val queryDslVersion = "4.4.0"
val springCloudVersion = "Hoxton.SR9"
val cucumberVersion = "6.7.0"
val camundaVersion = "7.14.0"
var jacocoVersion = "0.8.5"
dependencyManagement {
imports {
mavenBom("org.springframework.cloud:spring-cloud-dependencies:$springCloudVersion")
}
}
dependencies {
implementation("org.springframework.cloud:spring-cloud-starter-openfeign")
implementation("org.javers:javers-core:5.12.0")
implementation("io.jsonwebtoken:jjwt-api:0.11.1")
implementation("io.jsonwebtoken:jjwt-impl:0.11.1")
implementation("io.jsonwebtoken:jjwt-jackson:0.11.1")
implementation("org.springframework.boot:spring-boot-starter-mail")
implementation("org.springframework.boot:spring-boot-starter-data-jpa")
implementation("org.springframework.boot:spring-boot-starter-web")
implementation("org.springframework.boot:spring-boot-starter-hateoas")
// Aop dependency
implementation("org.springframework.boot:spring-boot-starter-aop")
implementation("com.fasterxml.jackson.module:jackson-module-kotlin")
implementation("org.jetbrains.kotlin:kotlin-reflect")
implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8")
implementation("org.apache.httpcomponents:httpclient:4.5.12")
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.3.5")
implementation("com.fasterxml.jackson.core:jackson-databind:2.10.3")
implementation("com.fasterxml.jackson.core:jackson-core:2.10.3")
implementation("org.springframework.boot:spring-boot-starter-actuator")
implementation("javax.xml.bind:jaxb-api:2.3.0")
implementation("org.springframework.boot:spring-boot-starter-integration")
implementation("org.springframework.kafka:spring-kafka")
implementation("org.springframework.integration:spring-integration-kafka:3.3.0.RELEASE")
implementation("org.springframework.boot:spring-boot-starter-validation")
implementation("org.springframework.boot:spring-boot-starter-security")
implementation("org.springframework:spring-tx")
runtimeOnly("mysql:mysql-connector-java")
implementation("org.mariadb.jdbc:mariadb-java-client:2.6.0")
implementation("org.springdoc:springdoc-openapi-kotlin:1.4.3")
implementation("org.springdoc:springdoc-openapi-ui:1.4.3")
implementation("org.springdoc:springdoc-openapi-hateoas:1.4.3")
}
springboot 어플리케이션을 실행하면 다음과 같은 예외가 발생합니다.최신 버전으로 업그레이드하기 전에 응용 프로그램이 제대로 작동하고 있었습니다.
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'configurationPropertiesBeans' defined in class path resource [org/springframework/cloud/autoconfigure/ConfigurationPropertiesRebinderAutoConfiguration.class]: Post-processing of merged bean definition failed; nested exception is java.lang.IllegalStateException: Failed to introspect Class [org.springframework.cloud.context.properties.ConfigurationPropertiesBeans] from ClassLoader [jdk.internal.loader.ClassLoaders$AppClassLoader@16f65612]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:586) ~[spring-beans-5.3.2.jar:5.3.2]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:531) ~[spring-beans-5.3.2.jar:5.3.2]
at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:335) ~[spring-beans-5.3.2.jar:5.3.2]
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) ~[spring-beans-5.3.2.jar:5.3.2]
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:333) ~[spring-beans-5.3.2.jar:5.3.2]
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:213) ~[spring-beans-5.3.2.jar:5.3.2]
at org.springframework.context.support.PostProcessorRegistrationDelegate.registerBeanPostProcessors(PostProcessorRegistrationDelegate.java:244) ~[spring-context-5.3.2.jar:5.3.2]
at org.springframework.context.support.AbstractApplicationContext.registerBeanPostProcessors(AbstractApplicationContext.java:767) ~[spring-context-5.3.2.jar:5.3.2]
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:572) ~[spring-context-5.3.2.jar:5.3.2]
at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:767) ~[spring-boot-2.4.1.jar:2.4.1]
at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:759) ~[spring-boot-2.4.1.jar:2.4.1]
at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:426) ~[spring-boot-2.4.1.jar:2.4.1]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:326) ~[spring-boot-2.4.1.jar:2.4.1]
at org.springframework.boot.builder.SpringApplicationBuilder.run(SpringApplicationBuilder.java:144) ~[spring-boot-2.4.1.jar:2.4.1]
at org.springframework.cloud.bootstrap.BootstrapApplicationListener.bootstrapServiceContext(BootstrapApplicationListener.java:212) ~[spring-cloud-context-2.2.6.RELEASE.jar:2.2.6.RELEASE]
at org.springframework.cloud.bootstrap.BootstrapApplicationListener.onApplicationEvent(BootstrapApplicationListener.java:117) ~[spring-cloud-context-2.2.6.RELEASE.jar:2.2.6.RELEASE]
at org.springframework.cloud.bootstrap.BootstrapApplicationListener.onApplicationEvent(BootstrapApplicationListener.java:74) ~[spring-cloud-context-2.2.6.RELEASE.jar:2.2.6.RELEASE]
at org.springframework.context.event.SimpleApplicationEventMulticaster.doInvokeListener(SimpleApplicationEventMulticaster.java:172) ~[spring-context-5.3.2.jar:5.3.2]
at org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:165) ~[spring-context-5.3.2.jar:5.3.2]
at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:139) ~[spring-context-5.3.2.jar:5.3.2]
at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:127) ~[spring-context-5.3.2.jar:5.3.2]
at org.springframework.boot.context.event.EventPublishingRunListener.environmentPrepared(EventPublishingRunListener.java:82) ~[spring-boot-2.4.1.jar:2.4.1]
at org.springframework.boot.SpringApplicationRunListeners.lambda$environmentPrepared$2(SpringApplicationRunListeners.java:63) ~[spring-boot-2.4.1.jar:2.4.1]
at java.base/java.util.ArrayList.forEach(ArrayList.java:1540) ~[na:na]
at org.springframework.boot.SpringApplicationRunListeners.doWithListeners(SpringApplicationRunListeners.java:117) ~[spring-boot-2.4.1.jar:2.4.1]
at org.springframework.boot.SpringApplicationRunListeners.doWithListeners(SpringApplicationRunListeners.java:111) ~[spring-boot-2.4.1.jar:2.4.1]
at org.springframework.boot.SpringApplicationRunListeners.environmentPrepared(SpringApplicationRunListeners.java:62) ~[spring-boot-2.4.1.jar:2.4.1]
at org.springframework.boot.SpringApplication.prepareEnvironment(SpringApplication.java:362) ~[spring-boot-2.4.1.jar:2.4.1]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:320) ~[spring-boot-2.4.1.jar:2.4.1]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1309) ~[spring-boot-2.4.1.jar:2.4.1]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1298) ~[spring-boot-2.4.1.jar:2.4.1]
at com.xxxx.MyApplicationKt.main(MyApplication.kt:22) ~[main/:na]
Caused by: java.lang.IllegalStateException: Failed to introspect Class [org.springframework.cloud.context.properties.ConfigurationPropertiesBeans] from ClassLoader [jdk.internal.loader.ClassLoaders$AppClassLoader@16f65612]
at org.springframework.util.ReflectionUtils.getDeclaredMethods(ReflectionUtils.java:481) ~[spring-core-5.3.2.jar:5.3.2]
at org.springframework.util.ReflectionUtils.doWithLocalMethods(ReflectionUtils.java:321) ~[spring-core-5.3.2.jar:5.3.2]
at org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor.buildPersistenceMetadata(PersistenceAnnotationBeanPostProcessor.java:417) ~[spring-orm-5.3.2.jar:5.3.2]
at org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor.findPersistenceMetadata(PersistenceAnnotationBeanPostProcessor.java:388) ~[spring-orm-5.3.2.jar:5.3.2]
at org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor.postProcessMergedBeanDefinition(PersistenceAnnotationBeanPostProcessor.java:335) ~[spring-orm-5.3.2.jar:5.3.2]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyMergedBeanDefinitionPostProcessors(AbstractAutowireCapableBeanFactory.java:1100) ~[spring-beans-5.3.2.jar:5.3.2]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:583) ~[spring-beans-5.3.2.jar:5.3.2]
... 31 common frames omitted
Caused by: java.lang.NoClassDefFoundError: org/springframework/boot/context/properties/ConfigurationBeanFactoryMetadata
at java.base/java.lang.Class.getDeclaredMethods0(Native Method) ~[na:na]
at java.base/java.lang.Class.privateGetDeclaredMethods(Class.java:3166) ~[na:na]
at java.base/java.lang.Class.getDeclaredMethods(Class.java:2309) ~[na:na]
at org.springframework.util.ReflectionUtils.getDeclaredMethods(ReflectionUtils.java:463) ~[spring-core-5.3.2.jar:5.3.2]
... 37 common frames omitted
Caused by: java.lang.ClassNotFoundException: org.springframework.boot.context.properties.ConfigurationBeanFactoryMetadata
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:581) ~[na:na]
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178) ~[na:na]
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522) ~[na:na]
... 41 common frames omitted
이 문제를 해결하는 것을 도와주세요.
Hoxton은 Spring Boot 2.4 사용 2020.0.0과 호환되지 않습니다.
현재 spring-cloud-starter-bootstrap 정식 버전이 제공되고 있어 문제가 해결되었습니다.
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-bootstrap</artifactId> <version>3.0.1</version> </dependency>
Spring Boot v2.5.6 (자세한 내용은 2021년 10월 21일 현재 버전 업데이트)로 업데이트 할 때 다음 해결 방법이 도움이 되었습니다.
pom.xml에서 봄 클라우드 버전을 업데이트했습니다.
<spring-cloud.version>2020.0.4</spring-cloud.version>
이전 버전에서는 Spring Boot < v2.3.0에서 아래 버전을 사용하고 있었습니다.
<spring-cloud.version>Hoxton.SR5</spring-cloud.version>
스프링 공식 페이지 - 링크에 릴리즈 트레인 스프링 부트 호환성 표가 있습니다.
여기에는 어떤 버전의 스프링 클라우드가 어떤 버전의 스프링 부트에 매핑되는지 명확하게 정리되어 있습니다.
Spring Boot 버전 2.4.x, 2.5.x Spring Cloud 2020.0.x 일포드의 경우
Spring Cloud 2020.0 릴리즈 노트에서 알려진 문제가 있는지 확인하십시오. 링크
mavenBom을 사용하여 종속성 관리 Import를 추가하여 수정했습니다.
dependencyManagement {
imports {
mavenBom "org.springframework.cloud:spring-cloud-starter-parent:Hoxton.SR10"
}
}
@spencergibb는 거의 맞지만 여전히 같은 오류가 발생하고 있습니다.@spencergibb의 답변과 함께 spring-cloud-starter-bootstrap 의존성을 추가하여 정상적으로 실행되도록 하였습니다.
extra["springCloudVersion"] = "2020.0.0"
val springCloudVersion = "2020.0.0"
implementation("org.springframework.cloud:spring-cloud-starter-bootstrap")
이 링크에 접속하여 동작하게 했습니다.
https://thepracticaldeveloper.com/book-update-2.4.0/
다음 버전의 추가neflix-eureka-client
버전에서는 이 문제가 해결되었습니다.
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
<version>3.0.2</version>
</dependency>
https://spring.io/projects/spring-cloud, 에 의하면, 이하를 시험해 볼 수 있습니다.
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>2020.0.4</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
2.3.12에서 Springboot을 업데이트 했을 때도 같은 문제가 있었습니다.릴리스 2.5.*
여러 번 헤딩한 결과 스프링 2.4 이상과 호환되지 않는 spring-cloud-starter: 2.0.0.RELEASE가 있다는 것을 알게 되었습니다.
마지막으로 Springboot 버전을 2.5.12로 업데이트하고 기존 Spring-cloud-starter 버전을 3.0.5로 덮어씁니다.
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.5.12</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter</artifactId>
<version>3.0.5</version>
</dependency>
언급URL : https://stackoverflow.com/questions/65488101/springboot-upgrade-from-2-3-5-release-to-2-4-1-classnotfoundexception-org-spri
'programing' 카테고리의 다른 글
python에서 wordpress REST api를 사용하여 이미지를 업로드하는 방법은 무엇입니까? (0) | 2023.04.03 |
---|---|
Access-Control-Allow-Origin 및 Angular.js $http (0) | 2023.04.03 |
로컬 속편 설정에 환경 변수 사용 (0) | 2023.04.03 |
숫자와 범위가 있는 루프용 AngularJS (0) | 2023.04.03 |
ASP.NET MVC 검증 폼(Angular 포함)JS (0) | 2023.04.03 |