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

添加Guice依赖至POM后触发java.lang.NoSuchMethodError异常(关联Guava方法)

添加Guice依赖至POM后触发java.lang.NoSuchMethodError异常(关联Guava方法)

看起来你碰到了典型的依赖版本冲突问题——虽然你没有直接引入Guava,但Guice和Selenium都依赖它,而且两者依赖的Guava版本不兼容,才导致了这个NoSuchMethodError。

问题根源

错误提示里找不到的ImmutableMap.of重载方法(带12个参数的版本),是Guava特定版本才有的API。当你加入Guice 5.1.0后,它会传递引入一个和Selenium 4.x依赖的Guava版本不一致的包,Maven在解析依赖时可能优先选择了旧版本(或者不匹配的版本),导致Selenium调用这个方法时找不到。

解决方案

这里有几个可行的解决办法,按优先级推荐:

1. 显式引入兼容的Guava版本

在你的POM里直接添加Guava依赖,指定一个同时兼容Guice 5.1.0和Selenium 4.8.1的版本(比如31.1-jre,这个版本适配大部分最新的Selenium和Guice版本),覆盖传递依赖的旧版本:

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

2. 排除Guice传递的Guava依赖

如果不想显式引入Guava,也可以在Guice的依赖配置里排除它自带的Guava,让项目使用Selenium依赖的版本:

<dependency>
    <groupId>com.google.inject</groupId>
    <artifactId>guice</artifactId>
    <version>5.1.0</version>
    <exclusions>
        <exclusion>
            <groupId>com.google.guava</groupId>
            <artifactId>guava</artifactId>
        </exclusion>
    </exclusions>
</dependency>

3. 清理Maven缓存并强制更新

有时候Maven的本地缓存会留存旧的依赖包,导致版本解析异常。可以执行以下命令清理缓存并重新拉取依赖:

mvn clean install -U

关于“昨天降级Selenium有用今天没用”的说明

这种情况大概率是Maven缓存或IDE缓存导致的——可能昨天你的本地缓存里刚好有兼容的Guava版本,今天缓存更新或者引入了其他冲突依赖,就又触发了问题。执行上面的缓存清理命令应该能解决这类偶发问题。

备注:内容来源于stack exchange,提问作者Krato

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.23 09:17:37