การรับ NoClassDefFoundError: ไม่สามารถเริ่มต้นคลาส org.codehaus.groovy.vmplugin.v7.Java7

Aug 29 2020

ฉันได้รับข้อผิดพลาดต่อไปนี้เมื่อฉันเริ่มแอปพลิเคชัน 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]

หลังจากค้นหามากฉันพบหลายอินสแตนซ์ของสิ่งนี้รวมถึงjava.lang.NoClassDefFoundError: ไม่สามารถเริ่มต้นคลาส org.codehaus.groovy.vmplugin.v7.Java7แต่ส่วนใหญ่เป็นโพสต์เก่า ๆ ใน gradle และ groovy เวอร์ชันเก่าหรือเกี่ยวข้องกับ แอนดรอยด์

นี่คือข้อมูลเวอร์ชันของฉัน:

$ 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

ฉันไม่ได้ทำการทดสอบใด ๆ นอกเหนือจากการทดสอบหน่วยของฉันที่มีความหนักหน่วง / สป็อคโดยสิ้นเชิงและฉันใช้ gradle สำหรับเครื่องมือสร้างของฉัน

ตามคำแนะนำที่ฉันพบฉันไปข้างหน้าและเปลี่ยนgradle-wrapper.propertiesไฟล์เป็น

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

มันคือ 6.5-bin

โครงการนี้ทำงานได้ดีบนคอมพิวเตอร์เครื่องเก่าของฉันด้วย Java 8 ฉันย้ายไปที่เวิร์กสเตชันเครื่องใหม่และกำลังพยายามย้ายไปopen JDK 14และนั่นคือตอนที่ปัญหาใหม่เริ่ม

สงสัยว่าจะไปจากที่นี่

คำตอบ

2 VladUlshin Aug 29 2020 at 01:23

จาก https://github.com/gradle/gradle/issues/10248

ดูเหมือนว่า GROOVY-9211 จะไม่ถูกแบ็คพอร์ตเป็น 2.5.x ดังนั้นดูเหมือนว่า Gradle จะต้องอัปเกรดเป็น Groovy 3.x เมื่อออกเพื่อรองรับ JDK 14

คุณจะต้องใช้ JDK 13 จนกว่า Gradle จะใช้ Groovy 3.x

EdorLinus Nov 03 2020 at 23:24

ฉันมีปัญหาเดียวกันกับการใช้ maven 3.2 และ JDK 1.8 การอัปเกรดเป็น JDK 11 แก้ไขได้