升级Cucumber JVM至7.10.1+遇NoSuchMethodError问题求助
问题分析与解决方案
这个错误的核心原因是Cucumber 7.10.1及以上版本对Gherkin解析模块的API做了变更,io.cucumber.gherkin.GherkinParser类的parse(String, InputStream)方法被移除或修改了签名。你没有直接调用该方法,但TestNGCucumberRunner内部依赖的Cucumber组件版本不统一,或者存在旧版本的Gherkin依赖残留,导致方法找不到。
解决步骤:
- 统一Cucumber组件版本:确保项目中所有Cucumber相关依赖(包括
cucumber-java、cucumber-testng、cucumber-picocontainer等)都使用7.10.1及以上的相同版本,避免版本不一致引发的API不兼容。 - 排查依赖冲突:通过依赖管理工具查看依赖树,检查是否有低版本的
io.cucumber:gherkin被间接引入。比如Maven执行mvn dependency:tree,Gradle执行./gradlew dependencies,找到冲突的旧版本依赖后,在依赖声明中手动排除。 - 验证TestNG兼容性:Cucumber 7.x系列对TestNG版本有要求,确保使用的TestNG版本在7.5及以上,避免因TestNG版本过低导致的适配问题。
- 清理本地缓存:执行依赖清理命令,清除本地仓库中残留的旧版本依赖文件。Maven可执行
mvn clean install -U,Gradle执行./gradlew clean build --refresh-dependencies。
内容的提问来源于stack exchange,提问作者deepakguna
相关产品推荐
相关产品推荐

