NoClassDefFoundError abrufen: Die Klasse org.codehaus.groovy.vmplugin.v7.Java7 konnte nicht initialisiert werden
Beim Starten meiner Spring Boot-Anwendung wird die folgende Fehlermeldung angezeigt.
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]
Nach langem Suchen habe ich mehrere Beispiele dafür gefunden, darunter java.lang.NoClassDefFoundError: Die Klasse org.codehaus.groovy.vmplugin.v7.Java7 konnte nicht initialisiert werden , aber die meisten sind ältere Beiträge in älteren Versionen von gradle und groovy oder sie sind verwandt mit Android.
Hier ist meine Versionsinfo:
$ 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
Abgesehen von meinen Unit-Tests, die komplett groovig / spockig sind, mache ich keine Groovys und ich benutze Gradle für meinen Build-Motor.
Ich folgte den Anweisungen, die ich gefunden hatte, und änderte meine gradle-wrapper.propertiesDatei in
distributionUrl=https\://services.gradle.org/distributions/gradle-6.6-bin.zip
es war 6,5-bin.
Dieses Projekt lief auf meinem alten Computer mit Java 8 einwandfrei. Ich habe es auf meine neue Workstation verschoben und versuche, darauf zu wechseln. Zu open JDK 14diesem Zeitpunkt begann das neue Problem.
Ich frage mich, wohin ich von hier aus gehen soll.
Antworten
Von https://github.com/gradle/gradle/issues/10248
Scheint, als würde GROOVY-9211 nicht auf 2.5.x zurückportiert. Es scheint also, dass Gradle nach dem Erscheinen ein Upgrade auf Groovy 3.x durchführen muss, um JDK 14 zu unterstützen.
Sie müssen JDK 13 verwenden, bis Gradle Groovy 3.x verwendet.
Ich hatte das gleiche Problem mit Maven 3.2. und JDK 1.8. Ein Upgrade auf JDK 11 hat das Problem behoben.