首个Selenium Java程序报错:java.lang.NoClassDefFoundError问题求助
问题描述
编写了第一个Selenium Java程序,代码如下:
package testing; import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; public class demooo { public static void main(String[] args) { // TODO Auto-generated method stub System.out.println("hi"); System.setProperty("webdriver.chrome.driver", "C:\\Users\\kavya\\Downloads\\chromedriver-win64\\chromedriver-win64\\chromedriver.exe"); WebDriver driver = new ChromeDriver(); driver.get("https://www.gmail.com/"); } }
运行时出现如下错误:
Exception in thread "main" java.lang.NoClassDefFoundError: com/google/common/io/ByteStreams
错误原因
该错误是由于项目缺少Guava依赖库导致的。Selenium(尤其是4.x及以上版本)依赖Guava类库,com.google.common.io.ByteStreams是Guava中的核心类,当项目未引入该依赖或依赖版本不匹配时,运行时就会找不到这个类,抛出NoClassDefFoundError。
解决方法
方法1:使用Maven管理依赖(推荐)
如果你的项目用Maven构建,在pom.xml中添加Guava依赖(选择与你使用的Selenium版本匹配的Guava版本,例如Selenium 4.xx版本可搭配Guava 31.0.1-jre):
<dependency> <groupId>com.google.guava</groupId> <artifactId>guava</artifactId> <version>31.0.1-jre</version> </dependency>
同时确保已正确引入Selenium的依赖:
<dependency> <groupId>org.seleniumhq.selenium</groupId> <artifactId>selenium-java</artifactId> <version>4.15.0</version> <!-- 替换为你使用的Selenium版本 --> </dependency>
方法2:手动导入Jar包
- 下载对应版本的Guava Jar包,将下载好的Jar包添加到项目的类路径中(例如在Eclipse中右键项目 → Build Path → Add External Archives)。
- 检查并确保Selenium的所有核心依赖Jar包(如
selenium-java.jar、selenium-api.jar等)都已正确导入项目。
额外注意
你的代码中webdriver.chrome.driver的路径原本存在换行,建议修正为完整的一行,避免路径解析错误:
System.setProperty("webdriver.chrome.driver", "C:\\Users\\kavya\\Downloads\\chromedriver-win64\\chromedriver-win64\\chromedriver.exe");
内容的提问来源于stack exchange,提问作者learner
相关产品推荐
相关产品推荐

