NoClassDefFoundError abrufen: Die Klasse org.codehaus.groovy.vmplugin.v7.Java7 konnte nicht initialisiert werden

Aug 29 2020

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

2 VladUlshin Aug 29 2020 at 01:23

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.

EdorLinus Nov 03 2020 at 23:24

Ich hatte das gleiche Problem mit Maven 3.2. und JDK 1.8. Ein Upgrade auf JDK 11 hat das Problem behoben.