NoClassDefFoundError alınıyor: org.codehaus.groovy.vmplugin.v7.Java7 sınıfı başlatılamadı

Aug 29 2020

Spring Boot uygulamamı başlattığımda aşağıdaki hatayı alıyorum.

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]

Çok fazla arama yaptıktan sonra, java.lang.NoClassDefFoundError dahil olmak üzere bunun birkaç örneğini buldum : org.codehaus.groovy.vmplugin.v7.Java7 sınıfı başlatılamadı , ancak çoğu gradle ve groovy'nin eski sürümlerindeki eski gönderiler veya bunlarla ilgili android.

İşte sürüm bilgilerim:

$ 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

Tamamen groovy / spock olan birim testlerim dışında herhangi bir groovy yapmıyorum ve inşa motorum için gradle kullanıyorum.

Bulduğum yönergeleri izleyerek devam ettim ve benim değiştirdi gradle-wrapper.propertiesdosyayı

distributionUrl=https\://services.gradle.org/distributions/gradle-6.6-bin.zip

6.5 kutu idi.

Bu proje eski bilgisayarımda Java 8 ile sorunsuz çalışıyordu. Projeyi yeni iş istasyonuma taşıdım ve taşınmaya çalışıyorum open JDK 14ve işte o zaman yeni sorun başladı.

Buradan nereye gideceğimi merak ediyorum.

Yanıtlar

2 VladUlshin Aug 29 2020 at 01:23

Nereden https://github.com/gradle/gradle/issues/10248

Görünüşe göre GROOVY-9211, 2.5.x'e geri yüklenmeyecek. Öyle görünüyor ki Gradle, JDK 14'ü desteklemek için çıktığında Groovy 3.x'e yükseltmek zorunda kalacak.

Gradle Groovy 3.x'i kullanana kadar JDK 13 kullanmanız gerekecektir.

EdorLinus Nov 03 2020 at 23:24

Maven 3.2 kullanarak aynı sorunu yaşadım. ve JDK 1.8. JDK 11'e yükseltmek sorunu çözdü.