AEM Maven原型项目集成Selenium遇ImmutableMap方法缺失错误求助
解决AEM Maven项目中Selenium的Guava依赖冲突问题
问题原因
java.lang.NoSuchMethodError: com.google.common.collect.ImmutableMap.of(...) 错误本质是依赖版本冲突:AEM项目自身依赖的旧版本Guava,覆盖了Selenium 4.9.1所需的Guava 31.0.1-jre。旧版本Guava中ImmutableMap.of()的方法重载与Selenium调用的不匹配,导致方法找不到。
解决方案
1. 定位冲突来源
先通过Maven命令排查项目中所有Guava依赖的路径,找出引入旧版本的依赖:
mvn dependency:tree -Dincludes=com.google.guava:guava
输出结果会显示每个Guava版本的引入来源(比如AEM的核心依赖、其他第三方库等)。
2. 排除旧版本Guava依赖
在引入旧Guava的依赖节点中,添加排除规则,阻止其传递引入旧版本。例如,如果是AEM SDK API依赖导致的冲突:
<dependency> <groupId>com.adobe.aem</groupId> <artifactId>aem-sdk-api</artifactId> <version>你的AEM版本号</version> <scope>provided</scope> <exclusions> <exclusion> <groupId>com.google.guava</groupId> <artifactId>guava</artifactId> </exclusion> </exclusions> </dependency>
根据第一步排查的结果,替换为实际的冲突依赖坐标。
3. 强制锁定Guava版本(可选)
如果排除操作后仍有冲突,可以在pom.xml的<dependencyManagement>节点中强制指定Guava版本,确保整个项目统一使用Selenium要求的版本:
<dependencyManagement> <dependencies> <dependency> <groupId>com.google.guava</groupId> <artifactId>guava</artifactId> <version>31.0.1-jre</version> </dependency> </dependencies> </dependencyManagement>
4. 验证修复结果
执行以下命令确认项目中Guava版本已统一为31.0.1-jre:
mvn dependency:tree | grep guava
确认输出中只有31.0.1-jre版本后,重新运行Selenium测试即可。
内容的提问来源于stack exchange,提问作者Kenny Hank
相关产品推荐
相关产品推荐

