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

运行Test Runner类报错:java.lang.NoClassDefFoundError: gherkin/formatter/Reporter

解决Java.lang.NoClassDefFoundError: gherkin/formatter/Reporter问题

这个错误我之前帮不少开发者处理过,本质是JVM在运行时找不到gherkin.formatter.Reporter类,结合你的pom配置来看,问题出在两个核心点上:

问题分析

  1. Cucumber与cucumber-extentsreport版本不兼容
    你用的cucumber-extentsreport:3.0.1是专门适配Cucumber 3.x版本的,但当前项目依赖的是Cucumber 4.2.2,版本不匹配导致依赖的gherkin类无法被正确加载。
  2. extentreports依赖的scope设置不合理
    extentreports:3.0.7的scope被设为provided,这意味着该依赖只会在编译阶段生效,运行时不会被加入到classpath中,间接影响了报告组件的正常工作。

解决方案

1. 调整依赖版本与scope

修改你的pom.xml依赖部分,更新cucumber-extentsreport到适配Cucumber 4.x的版本,调整extentreports的scope,并添加明确的gherkin依赖避免版本冲突:

<dependencies>
    <!-- 升级到适配Cucumber 4.x的cucumber-extentsreport版本 -->
    <dependency>
        <groupId>com.vimalselvam</groupId>
        <artifactId>cucumber-extentsreport</artifactId>
        <version>4.0.0</version>
    </dependency>
    <!-- 移除provided scope,确保运行时能加载该依赖 -->
    <dependency>
        <groupId>com.aventstack</groupId>
        <artifactId>extentreports</artifactId>
        <version>3.0.7</version>
    </dependency>
    <!-- 添加明确的gherkin依赖,匹配Cucumber 4.2.2的兼容版本 -->
    <dependency>
        <groupId>io.cucumber</groupId>
        <artifactId>gherkin</artifactId>
        <version>5.1.0</version>
    </dependency>
    <!-- 以下依赖保持原有配置即可 -->
    <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-email</artifactId>
        <version>1.5</version>
    </dependency>
    <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-io</artifactId>
        <version>2.4</version>
    </dependency>
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.12</version>
    </dependency>
    <dependency>
        <groupId>org.seleniumhq.selenium</groupId>
        <artifactId>selenium-java</artifactId>
        <version>3.141.59</version>
    </dependency>
    <dependency>
        <groupId>io.cucumber</groupId>
        <artifactId>cucumber-java</artifactId>
        <version>4.2.2</version>
    </dependency>
    <dependency>
        <groupId>io.cucumber</groupId>
        <artifactId>cucumber-junit</artifactId>
        <version>4.2.2</version>
    </dependency>
</dependencies>

2. 清理Maven缓存并重新构建

执行以下命令清理旧的依赖缓存,强制重新下载适配的依赖:

mvn clean install -U

完成以上步骤后,重新运行Test Runner应该就能解决这个错误了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 08:48:26