java.lang.NoClassDefFoundError:无法初始化类 org.codehaus.groovy.vmplugin.v7.Java7

use*_*200 115 java spring-boot

java.lang.NoClassDefFoundError: Could not initialize class org.codehaus.groovy.vmplugin.v7.Java7 and java.lang.NoClassDefFoundError: Could not initialize class org.codehaus.groovy.reflection.ReflectionCache当我运行 spring boot 应用程序时,我收到此异常 )

我正在使用以下工具

STS 3.9.10 发布
Open JDK 14 64 位
Spring boot 2.2.5

它在 oracle jdk 上运行良好,但在 openjdk 上运行失败。我没有使用任何常规库。这是基于 Maven 的 Spring Boot 项目。

Tar*_*rmo 137

你如何运行应用程序?这可能是因为您使用 Gradle 作为构建系统和 JDK14,并且 Gradle 版本较旧。参考:https : //github.com/gradle/gradle/issues/10248

如果您使用 Gradle Wrapper,请参阅$PROJECT_ROOT/gradle/wrapper/gradle-wrapper.properties. 属性 distributionUrl 应该是: distributionUrl=https\://services.gradle.org/distributions/gradle-6.3-bin.zip

如果它是旧版本,则更改它,运行./gradlew clean build并重试。

  • 非常感谢,我尝试了很多方法来尝试让 React Native 在我的机器上运行。这招成功了! (2认同)
  • 为了跟进这个问题,我正在使用 maven,并且最近 `brew` 将我升级到了 OpenJDK 14,所以我开始收到此错误。从这个答案的 gradle 问题链接中,我发现了这个 groovy 问题:https://issues.apache.org/jira/browse/GROOVY-9211,该问题已在 Groovy 2.5.10 中得到修复——所以请确保升级你的常规版本或更新版本。为我解决了问题! (2认同)
  • 有关可用的最新 gradle 版本,请参阅此处 - https://gradle.org/install/ (2认同)

小智 46

在文件中android/gradle/wrapper/gradle-wrapper.properties,确保distributionUrl如下:

distributionUrl=https\://services.gradle.org/distributions/gradle-6.3-bin.zip
Run Code Online (Sandbox Code Playgroud)

注意:如果你安装了 jdk 14


小智 42

我通过在 gradle 文件夹中编辑 gradle-wrapper.properties 而不是 .gradle 来解决它:

从:

distributionUrl=https\://services.gradle.org/distributions/gradle-6.2-all.zip
Run Code Online (Sandbox Code Playgroud)

到:

distributionUrl=https\://services.gradle.org/distributions/gradle-6.3-all.zip
Run Code Online (Sandbox Code Playgroud)

重建就可以了。


小智 13

在 Maven 和 SpringBoot 项目上遇到了同样的问题,无论如何都没有 Gradle。

对 org.codehaus.groovy 的依赖可能是通过 spring-cloud-contract-verifier 传递的。运行mvn dependency:tree以查看整个依赖树。

我通过将 spring-cloud-contract-maven-plugin 版本升级到 2.2.3-RELEASE 来修复它


Yu *_*aao 11

在我的maven Spring Boot项目中,我通过添加依赖项解决了问题:

        <!-- https://mvnrepository.com/artifact/org.codehaus.groovy/groovy -->
    <dependency>
        <groupId>org.codehaus.groovy</groupId>
        <artifactId>groovy</artifactId>
        <version>3.0.8</version>
    </dependency>
Run Code Online (Sandbox Code Playgroud)


Ser*_*kov 7

检查您的项目是否使用 Java 14 运行,即使它已为 Java 8 做好准备。

我的 IntelliJ Idea 在尝试执行在命令行中使用 JDK 8 完美运行的 Gradle 任务时出现了同样的错误。不过,ItelliJ Idea 项目的默认 JDK 是 14。


Jee*_*eka 6

就我而言,运行配置中使用的 JRE 版本与 pom.xml 中的目标 JDK 版本不同

SpringBoot_Run_Config


小智 3

您是否使用一些引入org.codehaus.groovy依赖项的第三方库?如果是,您可以尝试自行将所需的 groovy 依赖项替换为最新版本。

就我而言,它是org.liquibase:liquibase-groovy-dsl,所以我这样做了:

    <dependency>
        <groupId>org.liquibase</groupId>
        <artifactId>liquibase-groovy-dsl</artifactId>
        <version>2.1.1</version>
        <exclusions>
            <exclusion>
                <groupId>org.codehaus.groovy</groupId>
                <artifactId>groovy</artifactId>
            </exclusion>
            <exclusion>
                <groupId>org.codehaus.groovy</groupId>
                <artifactId>groovy-sql</artifactId>
            </exclusion>
        </exclusions>
    </dependency>

    <dependency>
        <groupId>org.codehaus.groovy</groupId>
        <artifactId>groovy</artifactId>
        <version>3.0.3</version>
    </dependency>

    <dependency>
        <groupId>org.codehaus.groovy</groupId>
        <artifactId>groovy-sql</artifactId>
        <version>3.0.3</version>
    </dependency>
Run Code Online (Sandbox Code Playgroud)