Obtention de NoClassDefFoundError: impossible d'initialiser la classe org.codehaus.groovy.vmplugin.v7.Java7
J'obtiens l'erreur suivante lorsque je démarre mon application Spring Boot.
java.lang.NoClassDefFoundError: Could not initialize class org.codehaus.groovy.reflection.ReflectionCache
at org.codehaus.groovy.runtime.dgmimpl.NumberNumberMetaMethod.<clinit>(NumberNumberMetaMethod.java:33) ~[groovy-2.5.8.jar:2.5.8]
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[na:na]
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) ~[na:na]
at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[na:na]
at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:500) ~[na:na]
at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:481) ~[na:na]
at org.codehaus.groovy.runtime.metaclass.MetaClassRegistryImpl.createMetaMethodFromClass(MetaClassRegistryImpl.java:258) ~[groovy-2.5.8.jar:2.5.8]
at org.codehaus.groovy.runtime.metaclass.MetaClassRegistryImpl.<init>(MetaClassRegistryImpl.java:111) ~[groovy-2.5.8.jar:2.5.8]
at org.codehaus.groovy.runtime.metaclass.MetaClassRegistryImpl.<init>(MetaClassRegistryImpl.java:86) ~[groovy-2.5.8.jar:2.5.8]
at groovy.lang.GroovySystem.<clinit>(GroovySystem.java:36) ~[groovy-2.5.8.jar:2.5.8]
at org.springframework.beans.factory.groovy.GroovyBeanDefinitionReader.<init>(GroovyBeanDefinitionReader.java:150) ~[spring-beans-5.2.2.RELEASE.jar:5.2.2.RELEASE]
at org.springframework.boot.BeanDefinitionLoader.<init>(BeanDefinitionLoader.java:85) ~[spring-boot-2.2.2.RELEASE.jar:2.2.2.RELEASE]
at org.springframework.boot.SpringApplication.createBeanDefinitionLoader(SpringApplication.java:738) ~[spring-boot-2.2.2.RELEASE.jar:2.2.2.RELEASE]
at org.springframework.boot.SpringApplication.load(SpringApplication.java:681) ~[spring-boot-2.2.2.RELEASE.jar:2.2.2.RELEASE]
at org.springframework.boot.SpringApplication.prepareContext(SpringApplication.java:392) ~[spring-boot-2.2.2.RELEASE.jar:2.2.2.RELEASE]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:314) ~[spring-boot-2.2.2.RELEASE.jar:2.2.2.RELEASE]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1226) ~[spring-boot-2.2.2.RELEASE.jar:2.2.2.RELEASE]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1215) ~[spring-boot-2.2.2.RELEASE.jar:2.2.2.RELEASE]
at pizzainthecloud.pizzaplace.Application.main(Application.java:23) ~[main/:na]
Après de nombreuses recherches, j'ai trouvé plusieurs exemples de cela, y compris java.lang.NoClassDefFoundError: Impossible d'initialiser la classe org.codehaus.groovy.vmplugin.v7.Java7 , mais la plupart sont des articles plus anciens sur les anciennes versions de gradle et groovy ou ils sont liés à Android.
Voici mes informations de version:
$ gradle -version
------------------------------------------------------------
Gradle 6.6.1
------------------------------------------------------------
Build time: 2020-08-25 16:29:12 UTC
Revision: f2d1fb54a951d8b11d25748e4711bec8d128d7e3
Kotlin: 1.3.72
Groovy: 2.5.12
Ant: Apache Ant(TM) version 1.10.8 compiled on May 10 2020
JVM: 14.0.2 (Oracle Corporation 14.0.2+12-46)
OS: Linux 5.4.0-42-generic amd64
Je ne fais pas de groovy en dehors de mes tests unitaires qui sont entièrement groovy / spock et j'utilise gradle pour mon moteur de construction.
En suivant les instructions que j'ai trouvées, je suis allé de l'avant et j'ai changé mon gradle-wrapper.propertiesfichier en
distributionUrl=https\://services.gradle.org/distributions/gradle-6.6-bin.zip
c'était 6,5 poubelles.
Ce projet fonctionnait bien sur mon ancien ordinateur avec Java 8. Je l'ai déplacé vers mon nouveau poste de travail et j'essaye de passer à open JDK 14, et c'est là que le nouveau problème a commencé.
Vous vous demandez où aller d'ici.
Réponses
De https://github.com/gradle/gradle/issues/10248
On dirait que GROOVY-9211 ne sera pas rétroporté vers 2.5.x. Il semble donc que Gradle devra mettre à niveau vers Groovy 3.x une fois qu'il sera sorti pour prendre en charge le JDK 14.
Vous devrez utiliser JDK 13 jusqu'à ce que Gradle utilise Groovy 3.x.
J'ai eu le même problème avec maven 3.2. et JDK 1.8. La mise à niveau vers JDK 11 l'a résolu.