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

如何解决Selenium WebDriver中ByteStreams的java.lang.NoClassDefFoundError?

问题描述

已下载Selenium 4.13.0并添加到项目库中,搭配ChromeDriver 117.0.5938.150,运行以下代码时出现NoClassDefFoundError错误:

package Selenium;

import org.openqa.selenium.chrome.ChromeDriver;

public class learning {

    public static void main(String[] args) {
        
        System.setProperty("webdriver.chrome.driver", "C:\\Users\\benis\\Desktop\\eclipse\\chromedriver-win64\\chromedriver-win64\\chromedriver.exe");
        
        ChromeDriver driver = new ChromeDriver();
        
        driver.get("https://www.facebook.com");
    }
}

报错信息

Exception in thread "main" java.lang.NoClassDefFoundError: com/google/common/io/ByteStreams
at org.seleniumhq.selenium.remote_driver/org.openqa.selenium.remote.service.DriverService$Builder.parseLogOutput(DriverService.java:472)
at org.seleniumhq.selenium.chrome_driver/org.openqa.selenium.chrome.ChromeDriverService$Builder.loadSystemProperties(ChromeDriverService.java:257)
at org.seleniumhq.selenium.remote_driver/org.openqa.selenium.remote.service.DriverService$Builder.build(DriverService.java:495)
at org.seleniumhq.selenium.chrome_driver/org.openqa.selenium.chrome.ChromeDriverService.createDefaultService(ChromeDriverService.java:137)
at org.seleniumhq.selenium.chrome_driver/org.openqa.selenium.chrome.ChromeDriver.(ChromeDriver.java:51)
at SeleniumTraining/Selenium.learning.main(learning.java:11)
Caused by: java.lang.ClassNotFoundException: com.google.common.io.ByteStreams
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:525)
... 6 more


解决方案

该错误源于项目缺失Guava依赖(com.google.common.io.ByteStreams属于Guava工具库),Selenium 4.x依赖特定版本的Guava,手动添加Selenium jar包时容易遗漏这类间接依赖。

具体解决步骤:

  • 使用依赖管理工具(推荐)
    如果用Maven,在pom.xml中添加Selenium依赖,会自动拉取所有必需的间接依赖:

    <dependency>
        <groupId>org.seleniumhq.selenium</groupId>
        <artifactId>selenium-java</artifactId>
        <version>4.13.0</version>
    </dependency>
    

    如果用Gradle,在build.gradle中添加:

    implementation 'org.seleniumhq.selenium:selenium-java:4.13.0'
    

    重新构建项目即可自动下载缺失的Guava及其他依赖。

  • 手动添加Guava jar包
    若必须手动管理依赖,下载与Selenium 4.13.0兼容的Guava版本(推荐31.1-jre),添加到项目的库目录中。

  • 简化Driver初始化(可选)
    Selenium 4.6+已支持自动管理Driver,无需手动设置webdriver.chrome.driver,可简化代码:

    package Selenium;
    
    import org.openqa.selenium.chrome.ChromeDriver;
    
    public class learning {
    
        public static void main(String[] args) {
            ChromeDriver driver = new ChromeDriver();
            driver.get("https://www.facebook.com");
        }
    }
    

    确保ChromeDriver版本与本地Chrome浏览器版本匹配即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 09:16:02