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

通过Selenium启动Chrome 65时出现多类报错,请求技术解决方案

解决Selenium启动Chrome时的java.lang.NoSuchMethodError问题

嘿,我来帮你搞定这个报错!这个java.lang.NoSuchMethodError: com.google.common.collect.ImmutableSet.toImmutableSet()错误的核心原因很明确:你的项目里用的Guava(谷歌核心工具库)版本太低了。toImmutableSet()这个方法是Guava 21.0版本才新增的,而你当前环境里的Guava版本不支持这个方法,和ChromeDriver 2.37的依赖需求冲突了。

结合你给出的环境(Chrome 65 + ChromeDriver 2.37),我给你几个靠谱的解决方案:

方案一:直接升级Guava版本

这是最直接的办法,把Guava升级到21.0及以上的稳定版本就行。比如用Maven的话,在pom.xml里更新依赖:

<dependency>
    <groupId>com.google.guava</groupId>
    <artifactId>guava</artifactId>
    <version>28.1-jre</version> <!-- 这个版本和ChromeDriver 2.37兼容性很好 -->
</dependency>

如果是Gradle项目,就在build.gradle里修改:

implementation 'com.google.guava:guava:28.1-jre'

方案二:排除依赖里的低版本Guava

有时候是项目里其他依赖间接引入了低版本的Guava,导致版本冲突。这时候你需要在Selenium相关的依赖里排除掉旧版本的Guava,再单独引入高版本的:
Maven示例(以selenium-chrome-driver为例):

<dependency>
    <groupId>org.seleniumhq.selenium</groupId>
    <artifactId>selenium-chrome-driver</artifactId>
    <version>3.11.0</version> <!-- 这个版本和Chrome 65完美兼容 -->
    <exclusions>
        <exclusion>
            <groupId>com.google.guava</groupId>
            <artifactId>guava</artifactId>
        </exclusion>
    </exclusions>
</dependency>
<!-- 然后单独引入高版本Guava -->
<dependency>
    <groupId>com.google.guava</groupId>
    <artifactId>guava</artifactId>
    <version>28.1-jre</version>
</dependency>

方案三:统一Selenium、ChromeDriver和Chrome的版本

你的Chrome是65,ChromeDriver用2.37是对的,但建议搭配Selenium 3.11.0版本,这个版本和前两者的兼容性拉满,而且它依赖的Guava版本刚好支持toImmutableSet()方法,能从根源避免版本冲突问题。

另外,关于你日志里的两个警告,顺便提一下:

  • 关于未指定织入器选项'-Xset:weaveJavaxPackages=true':如果你的项目不需要对javax.*包下的类做字节码织入,直接忽略就行;如果需要的话,在JVM启动参数里加上这个选项就可以消除警告。
  • 关于未找到log4j2配置文件:如果不需要自定义日志格式,默认的控制台错误日志输出不影响核心功能;如果想美化日志或者调整输出方式,在项目的resources目录下添加log4j2.xml或者log4j2.properties配置文件就行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 02:24:16