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

运行Selenium时遇com.google.common.collect.ImmutableMap.of方法不存在错误

问题分析与解决方案

问题重现

运行代码:

WebDriverManager.chromedriver().setup();
driver = new ChromeDriver();

触发错误:

java.lang.NoSuchMethodError: com.google.common.collect.ImmutableMap.of( java.lang.Object, java.lang.Object, java.lang.Object, java.lang.Object, java.lang.Object, java.lang.Object, java.lang.Object, java.lang.Object, java.lang.Object, java.lang.Object, java.lang.Object, java.lang.Object,) com.google.common.collect.ImmutableMap,
    at org.openqa.selenium.chrome.AddHasCasting.getAdditionalCommands(AddHasCasting.java:38)
    at org.openqa.selenium.chrome.ChromeDriver$ChromeDriverCommandExecutor.getExtraCommands(ChromeDriver.java:99)
    at org.openqa.selenium.chrome.ChromeDriver$ChromeDriverCommandExecutor.<init>(ChromeDriver.java:94)
    at org.openqa.selenium.chrome.ChromeDriver.<init>(ChromeDriver.java:82)
    at org.openqa.selenium.chrome.ChromeDriver.<init>(ChromeDriver.java:50)
    ...

该错误本质是Guava版本不兼容:Selenium 4.8.1需要特定版本的Guava提供ImmutableMap.of的重载方法,但项目中实际引入的Guava版本缺失该方法。

解决方案

1. 显式引入Guava依赖

你仅在dependencyManagement中锁定了Guava版本,但未在dependencies块中显式声明依赖,导致Maven未主动引入指定版本的Guava。在pom.xml的<dependencies>中添加:

<dependency>
    <groupId>com.google.guava</groupId>
    <artifactId>guava</artifactId>
    <version>31.0.1-jre</version>
</dependency>

2. 排查并解决依赖冲突

执行Maven命令检查依赖树,确认是否有其他依赖引入了旧版本Guava:

mvn dependency:tree

若发现旧版本Guava,可在对应依赖中添加排除规则,例如:

<exclusion>
    <groupId>com.google.guava</groupId>
    <artifactId>guava</artifactId>
</exclusion>

3. 清理并重建项目

执行以下命令清理Maven缓存,强制更新依赖并重新构建:

mvn clean install -U

4. 验证环境兼容性

你的Java 1.8.0_351与Guava 31.0.1-jre版本兼容,无需调整Java环境。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 14:52:53