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

Mac M2配置ChromeDriver遇java.lang.NoSuchMethodError问题求助

Mac M2配置ChromeDriver时遇java.lang.NoSuchMethodError问题解决

错误日志

Exception in thread "main" java.lang.NoSuchMethodError: 'com.google.common.collect.ImmutableMap 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)'
at org.openqa.selenium.chrome.AddHasCasting.getAdditionalCommands(AddHasCasting.java:38)
at org.openqa.selenium.chrome.ChromeDriver$ChromeDriverCommandExecutor.getExtraCommands(ChromeDriver.java:98)
at org.openqa.selenium.chrome.ChromeDriver$ChromeDriverCommandExecutor.(ChromeDriver.java:93)
at org.openqa.selenium.chrome.ChromeDriver.(ChromeDriver.java:81)
at org.openqa.selenium.chrome.ChromeDriver.(ChromeDriver.java:49)
at org.example.lesson3.SeleniumStart.main(SeleniumStart.java:12)

POM配置

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>org.example</groupId>
  <artifactId>selenium_start</artifactId>
  <version>1.0-SNAPSHOT</version>
  <packaging>jar</packaging>

  <name>selenium_start</name>
  <url>http://maven.apache.org</url>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>8</maven.compiler.source>
    <maven.compiler.target>8</maven.compiler.target>
  </properties>

  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.13.2</version>
    </dependency>
    <dependency>
      <groupId>com.squareup.okhttp3</groupId>
      <artifactId>okhttp</artifactId>
      <version>4.10.0</version>
    </dependency>
    <dependency>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-surefire-report-plugin</artifactId>
      <version>3.0.0-M7</version>
    </dependency>
    <dependency>
      <groupId>org.seleniumhq.selenium</groupId>
      <artifactId>selenium-java</artifactId>
      <version>4.5.3</version>
    </dependency>
    <dependency>
      <groupId>io.github.bonigarcia</groupId>
      <artifactId>webdrivermanager</artifactId>
      <version>5.3.0</version>
      <exclusions>
        <exclusion>
          <groupId>com.google.guava</groupId>
          <artifactId>guava</artifactId>
        </exclusion>
      </exclusions>
    </dependency>
    <dependency>
      <groupId>com.google.guava</groupId>
      <artifactId>guava</artifactId>
      <version>31.1-jre</version>
    </dependency>

  </dependencies>
</project>

环境与代码情况

  • 设备:Mac M2
  • Chrome版本:107.0.5304.87
  • ChromeDriver版本:107.0.5304.62(arm64)
  • 两种测试代码均报错:
    代码1:
    System.setProperty("webdriver.chrome.driver", "src/main/resources/chromedriver");
    
    WebDriverManager.chromedriver().setup();
    WebDriver driver = new ChromeDriver();
    
    driver.get("https://google.com");
    
    driver.quit();
    
    代码2:
    System.setProperty("webdriver.chrome.driver", "src/main/resources/chromedriver");
    
    WebDriver driver = new ChromeDriver();
    
    driver.get("https://google.com");
    
    driver.quit();
    

解决方案

核心原因

该异常属于Guava版本冲突:Selenium 4.5.3依赖特定版本的Guava,手动添加Guava依赖或依赖排除操作导致项目引入了不兼容版本,进而出现方法找不到的错误。

具体修复步骤

  1. 调整POM依赖

    • 移除手动添加的Guava依赖:com.google.guava:guava:31.1-jre,让Selenium自带的兼容版本自动生效。
    • 移除WebDriverManager中的Guava排除配置,避免依赖缺失或版本不匹配。
      调整后的POM依赖部分:
    <dependencies>
      <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.13.2</version>
      </dependency>
      <dependency>
        <groupId>com.squareup.okhttp3</groupId>
        <artifactId>okhttp</artifactId>
        <version>4.10.0</version>
      </dependency>
      <dependency>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-report-plugin</artifactId>
        <version>3.0.0-M7</version>
      </dependency>
      <dependency>
        <groupId>org.seleniumhq.selenium</groupId>
        <artifactId>selenium-java</artifactId>
        <version>4.5.3</version>
      </dependency>
      <dependency>
        <groupId>io.github.bonigarcia</groupId>
        <artifactId>webdrivermanager</artifactId>
        <version>5.3.0</version>
      </dependency>
    </dependencies>
    
  2. 优化测试代码
    WebDriverManager会自动下载、配置对应版本的ChromeDriver,无需手动设置webdriver.chrome.driver属性,简化后的代码:

    WebDriverManager.chromedriver().setup();
    WebDriver driver = new ChromeDriver();
    
    driver.get("https://google.com");
    driver.quit();
    
  3. 清理并重新构建项目
    执行Maven命令清理旧依赖并重新构建:

    mvn clean install -U
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 14:30:40