Mendapatkan NoClassDefFoundError: Tidak dapat menginisialisasi kelas org.codehaus.groovy.vmplugin.v7.Java7

Aug 29 2020

Saya mendapatkan pesan kesalahan berikut ketika saya memulai aplikasi Spring Boot saya.

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]

Setelah banyak mencari, saya menemukan beberapa contoh ini termasuk java.lang.NoClassDefFoundError: Tidak dapat menginisialisasi kelas org.codehaus.groovy.vmplugin.v7.Java7 , tetapi sebagian besar adalah posting lama pada versi gradle dan groovy yang lebih lama atau terkait dengan android.

Ini info versi saya:

$ 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

Saya tidak melakukan apa pun selain pengujian unit saya yang sepenuhnya keren / spock dan saya menggunakan gradle untuk mesin build saya.

Mengikuti petunjuk yang saya temukan, saya melanjutkan dan mengubah gradle-wrapper.propertiesfile saya menjadi

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

itu 6.5-bin.

Proyek ini berjalan dengan baik di komputer lama saya dengan Java 8. Saya memindahkannya ke workstation baru dan mencoba pindah ke open JDK 14, dan saat itulah masalah baru dimulai.

Bingung ke mana harus pergi dari sini.

Jawaban

2 VladUlshin Aug 29 2020 at 01:23

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

Sepertinya GROOVY-9211 tidak akan di-backport ke 2.5.x. Jadi tampaknya Gradle perlu meningkatkan ke Groovy 3.x setelah keluar untuk mendukung JDK 14.

Anda perlu menggunakan JDK 13 hingga Gradle menggunakan Groovy 3.x.

EdorLinus Nov 03 2020 at 23:24

Saya memiliki masalah yang sama menggunakan maven 3.2. dan JDK 1.8. Mengupgrade ke JDK 11 menyelesaikannya.