You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Serenity BDD Maven REST测试报org.codehaus.groovy.vmplugin.v7.Java7初始化错误

问题根因

这个java.lang.NoClassDefFoundError: Could not initialize class org.codehaus.groovy.vmplugin.v7.Java7报错是版本兼容性问题导致:你使用的2.0.81版本Serenity BDD依赖的Groovy版本较低,无法兼容你本地运行的JDK11及以上高版本Java环境。

解决方案
  • 方案1:切换项目的编译运行环境为JDK8
    这是适配Serenity 2.x版本最稳妥的方案,不需要修改任何pom依赖配置,仅需将项目的JDK版本切换为1.8即可解决报错。
  • 方案2:升级Serenity BDD版本
    若需保留高版本JDK环境,可将pom.properties中所有Serenity相关版本统一升级到3.2.0及以上的稳定版本,示例配置:
    <properties>
        <serenity.version>3.9.8</serenity.version>
        <serenity.maven.version>3.9.8</serenity.maven.version>
        <serenity.restassured.version>3.9.8</serenity.restassured.version>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <encoding>UTF-8</encoding>
    </properties>
    
    升级后刷新Maven依赖即可,新版本Serenity内置的Groovy已经完成高版本JDK适配。
  • 方案3:手动引入兼容高版本JDK的Groovy依赖
    若暂时不想升级Serenity版本也不想降低JDK版本,可在pom的dependencies节点中手动加入高版本Groovy依赖,覆盖Serenity传递的旧版本Groovy:
    <dependency>
        <groupId>org.codehaus.groovy</groupId>
        <artifactId>groovy-all</artifactId>
        <version>2.5.14</version>
        <type>pom</type>
    </dependency>
    
额外优化提示

你的测试代码中的init()方法未添加@BeforeClass注解,测试运行时不会自动执行,配置的baseURI和basePath不会生效,需修改代码如下:

import org.junit.BeforeClass; // 新增导入

@RunWith(SerenityRunner.class)
public class FirstRestTest {
    @BeforeClass // 新增注解
    public static void init() {
        RestAssured.baseURI = "http://localhost:8080";
        RestAssured.basePath = "/api/users/";
    }
    // 其余代码保持不变
}

内容的提问来源于stack exchange,提问作者GreenTree

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 03:15:03