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

运行Cucumber项目遇java.lang.ExceptionInInitializerError错误求助

解决Cucumber项目中java.lang.ExceptionInInitializerError错误

这个错误的核心原因是依赖版本不兼容+依赖冲突,尤其是Cucumber组件版本混乱、XStream依赖冲突,以及报告组件的重复引入。下面是具体问题排查和修复方案:

问题分析

  1. Cucumber组件版本混乱:混用了旧版info.cukes和新版io.cucumber的依赖,且版本差异极大(如cucumber-core用1.2.5,gherkin却用18.1.0),旧版Cucumber内置的XStream版本与其他组件冲突,触发初始化异常。
  2. ExtentReports重复依赖:同时引入com.relevantcodes:extentreports:2.41.2和com.aventstack:extentreports:3.1.2,两个版本的类加载会引发冲突。
  3. Selenium组件版本不一致:selenium-java(3.7.0)和selenium-chrome-driver(3.141.59)版本不匹配,导致WebDriver初始化异常。
  4. 冗余依赖:cucumber-jvm-deps在新版Cucumber中已无需手动引入,旧版依赖会与核心组件冲突。

修复后的依赖配置

替换原有依赖为以下统一版本的配置:

<dependencies>
    <!-- Cucumber核心组件,统一使用新版groupId -->
    <dependency>
        <groupId>io.cucumber</groupId>
        <artifactId>cucumber-core</artifactId>
        <version>7.14.0</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>io.cucumber</groupId>
        <artifactId>cucumber-java</artifactId>
        <version>7.14.0</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>io.cucumber</groupId>
        <artifactId>cucumber-testng</artifactId>
        <version>7.14.0</version>
        <scope>test</scope>
    </dependency>

    <!-- TestNG -->
    <dependency>
        <groupId>org.testng</groupId>
        <artifactId>testng</artifactId>
        <version>7.8.0</version>
        <scope>test</scope>
    </dependency>

    <!-- 报告组件:保留新版ExtentReports,适配Cucumber -->
    <dependency>
        <groupId>com.aventstack</groupId>
        <artifactId>extentreports</artifactId>
        <version>5.0.9</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>tech.grasshopper</groupId>
        <artifactId>extentreports-cucumber7-adapter</artifactId>
        <version>1.14.0</version>
        <scope>test</scope>
    </dependency>

    <!-- Hamcrest -->
    <dependency>
        <groupId>org.hamcrest</groupId>
        <artifactId>hamcrest-core</artifactId>
        <version>2.2</version>
        <scope>test</scope>
    </dependency>

    <!-- Selenium组件,统一版本 -->
    <dependency>
        <groupId>org.seleniumhq.selenium</groupId>
        <artifactId>selenium-java</artifactId>
        <version>4.11.0</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>io.github.bonigarcia</groupId>
        <artifactId>webdrivermanager</artifactId>
        <version>5.5.3</version>
        <scope>test</scope>
    </dependency>

    <!-- 覆盖率组件(可选) -->
    <dependency>
        <groupId>net.sourceforge.cobertura</groupId>
        <artifactId>cobertura</artifactId>
        <version>2.1.1</version>
        <scope>test</scope>
        <exclusions>
            <exclusion>
                <groupId>com.sun</groupId>
                <artifactId>tools</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
</dependencies>

修复步骤

  1. 删除原有pom.xml中所有info.cukes开头的依赖,以及重复的ExtentReports依赖
  2. 复制上述依赖配置到pom.xml中
  3. 执行Maven命令清理缓存并重新构建:mvn clean install -U
  4. 重新运行Cucumber测试

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 07:15:39