运行Cucumber项目遇java.lang.ExceptionInInitializerError错误求助
解决Cucumber项目中
java.lang.ExceptionInInitializerError错误 这个错误的核心原因是依赖版本不兼容+依赖冲突,尤其是Cucumber组件版本混乱、XStream依赖冲突,以及报告组件的重复引入。下面是具体问题排查和修复方案:
问题分析
- Cucumber组件版本混乱:混用了旧版
info.cukes和新版io.cucumber的依赖,且版本差异极大(如cucumber-core用1.2.5,gherkin却用18.1.0),旧版Cucumber内置的XStream版本与其他组件冲突,触发初始化异常。 - ExtentReports重复依赖:同时引入
com.relevantcodes:extentreports:2.41.2和com.aventstack:extentreports:3.1.2,两个版本的类加载会引发冲突。 - Selenium组件版本不一致:selenium-java(3.7.0)和selenium-chrome-driver(3.141.59)版本不匹配,导致WebDriver初始化异常。
- 冗余依赖:
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>
修复步骤
- 删除原有pom.xml中所有
info.cukes开头的依赖,以及重复的ExtentReports依赖 - 复制上述依赖配置到pom.xml中
- 执行Maven命令清理缓存并重新构建:
mvn clean install -U - 重新运行Cucumber测试
内容的提问来源于stack exchange,提问作者Dikshit Bhardwaj
相关产品推荐
相关产品推荐

