51
votes

Mise à niveau de Springboot de 2.3.5

J'essaie de mettre à niveau mon projet Kotlin - Gradle de Springboot version 2.3.5.release à 2.4.1. On dirait qu'il y a une incapacité à version entre Springboot-2.4.1 et Sping-Cloud-Hoxton.Sr9.

build.gradle.kts extrait

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

Lorsque j'exécute l'application Springboot, j'obtiens une exception suivante. L'application fonctionnait correctement avant de passer à la nouvelle version.

    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")
}

Veuillez m'aider à résoudre ce problème.


0 commentaires

9 Réponses :


54
votes

Hoxton n'est pas compatible avec Spring Boot 2.4 Utiliser 2020.0.0


2 commentaires

Qu'entendez-vous par Spring Boot 2.4 Utilisez 2020.0.0 ?


Val springCloudVersion = "2020.0.1"



3
votes

@SpenceGiBB était presque correct, mais j'obtenais toujours la même erreur. Avec la réponse de @ SpenceGibb, j'ai ajouté la dépendance Spring-Cloud-Starter-Bootstrap pour le faire l'exécuter avec succès.

extra["springCloudVersion"] = "2020.0.0"
val springCloudVersion = "2020.0.0"

implementation("org.springframework.cloud:spring-cloud-starter-bootstrap")

J'ai suivi ce lien pour le faire fonctionner

https://thepracticaldeveloper.com/book-update-2.4.0 /


2 commentaires

Je rencontre ce problème sans utiliser Spring Cloud du tout. Ces dépendances sont-elles désormais obligatoires?


Je comprends: "Je n'ai pas trouvé org.springframework.cloud:spring-cloud-starter-bootstrap:202‌ 0.0.0"



22
votes

Il existe une version officielle de Spring-Cloud-Starter-Bootstrap disponible maintenant, ajoutant cela a résolu le problème pour moi.

<dependency>
  <groupId>org.springframework.cloud</groupId>
  <artifactId>spring-cloud-starter-bootstrap</artifactId>
  <version>3.0.1</version>
</dependency>


0 commentaires

4
votes

L'ajout d'une importation de gestion des dépendances avec mavenbom l'a corrigé pour moi

dependencyManagement {
    imports {
        mavenBom "org.springframework.cloud:spring-cloud-starter-parent:Hoxton.SR10"
    }
}


1 commentaires

Des trucs de travail, merci



2
votes

L'ajout de version suivante de neflix-eureka-client a résolu ce problème pour moi:

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
    <version>3.0.2</version>
</dependency>


0 commentaires

4
votes

Il y a un tableau de compatibilité de démarrage de Spring Train disponible sur la page officielle du printemps - lien < / p>

qui décrit clairement la version de Spring Cloud Maps à quelle version de Spring Boot.

Pour Spring Boot version 2.4.x, 2.5.x Cloud de printemps 2020.0.x aka ilford

Consultez les notes de version de Spring Cloud 2020.0 pour tous les problèmes connus - lien


0 commentaires

7
votes

La résolution ci-dessous m'a aidé lors de la mise à jour de Spring Boot v2.5.6 (dernière version au 21 oct /2.5.6 "rel =" noreferrer "> https://mvnrepository.com/artifact/org.springframework.boot/spring-boot/2.5.6 Pour plus d'informations):

J'ai mis à jour le printemps Version cloud dans pom.xml

<spring-cloud.version>Hoxton.SR5</spring-cloud.version>

Plus tôt j'utilisais ci-dessous la version avec Spring Boot

<spring-cloud.version>2020.0.4</spring-cloud.version>


2 commentaires

J'ai résolu comme celui-ci utilisé eureka-client.version = 3.0.2 et Spring-Cloud.version = 2020.0.4 Spring.boot.version 2.5.6


à partir de [liens de base] printemps.io/projects/spring-cloud Tableau 1. Libérez le train de printemps Compatibilité de démarrage * Version de la version de démarrage du train * 2021.0.x aka jubilee 2.6.x * 2020.0.x aka ilford 2.4.x, 2.5.x (à partir de 2020.0.3) * Hoxton 2.2.x, 2.3.x (à partir de SR5) * Greenwich 2.1.x * Finchley 2.0.x * Edgware 1.5.x * Dalston 1.5.x Spring Cloud Dalston, Edgware, Finchley et Greenwich ont tous atteint l'état de fin de vie et ne sont plus pris en charge.



1
votes

Selon https://spring.io/projects/spring-cloud , vous peut essayer ci-dessous.

<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>


0 commentaires

0
votes

J'ai fait face au même problème lorsque j'ai mis à jour le Springboot de 2.3.12.Rease à 2.5. *

Après beaucoup de rupture de tête, j'ai compris qu'il y a une dépendance en transitif Spring-Cloud-Starter: 2.0.0 .Rélion qui n'est pas compatible avec le printemps 2.4 et supérieur.

Enfin, il est corrigé en mettant à jour la version Springboot à 2.5.12 et remplacez la version existante de Spring-Cloud-Starter à 3.0.5

xxx pre>

<dependency>
  <groupId>org.springframework.cloud</groupId>
  <artifactId>spring-cloud-starter</artifactId>
  <version>3.0.5</version>
</dependency>


0 commentaires