Maven环境下Selenium 4.2.0测试报错:ImmutableList方法缺失
解决Selenium 4.2.0 + Maven的java.lang.NoSuchMethodError问题
错误原因
这个错误是由于Guava版本不兼容导致的:com.google.common.collect.ImmutableList.toImmutableList()方法是Guava 21.0及以后版本新增的Collector实现,而你的项目中存在更低版本的Guava依赖,与Selenium 4.2.0所需的高版本Guava冲突,导致JVM加载了低版本Guava,找不到目标方法。
Selenium 4.2.0官方依赖的Guava版本为31.1-jre,需确保项目使用该版本或兼容的高版本。
解决方案
1. 显式声明Guava依赖
在pom.xml中直接添加指定版本的Guava依赖,让Maven优先加载该版本:
<dependency> <groupId>com.google.guava</groupId> <artifactId>guava</artifactId> <version>31.1-jre</version> </dependency>
2. 锁定Guava版本(推荐)
使用dependencyManagement强制项目中所有依赖统一使用指定版本的Guava,彻底避免版本冲突:
<dependencyManagement> <dependencies> <dependency> <groupId>com.google.guava</groupId> <artifactId>guava</artifactId> <version>31.1-jre</version> </dependency> </dependencies> </dependencyManagement>
3. 排查并排除低版本Guava依赖
如果上述方法无效,先找出引入低版本Guava的依赖:
- 执行Maven命令查看完整依赖树:
mvn dependency:tree -Dverbose | grep guava
- 在输出中定位版本较低的Guava来源,然后在对应依赖中排除Guava:
例如,若xxx:some-dependency引入了低版本Guava,修改该依赖配置:
<dependency> <groupId>xxx</groupId> <artifactId>some-dependency</artifactId> <version>x.x.x</version> <exclusions> <exclusion> <groupId>com.google.guava</groupId> <artifactId>guava</artifactId> </exclusion> </exclusions> </dependency>
4. 清理Maven缓存
清理本地缓存的旧依赖,确保重新拉取正确版本:
mvn clean install -U
内容的提问来源于stack exchange,提问作者Mahmoud Usama
相关产品推荐
相关产品推荐

