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

Gradle集成Selenium ChromeDriver失败:启动报错求助

问题解答

1. 无法正常运行的原因

你遇到的NoClassDefFoundError是因为Gradle默认生成的jar是瘦jar——仅包含你的业务代码,没有打包Selenium等第三方依赖库的类。运行JVM时找不到org.openqa.selenium.WebDriver这类依赖类,导致初始化主类失败。

另外,你注释掉的System.setProperty在Selenium 4.x版本中确实不需要,框架自带的DriverManager会自动下载并匹配ChromeDriver,这不是当前报错的原因。

2. 修复方案

推荐两种可行方案,按需选择:

方案一:使用Gradle Application插件(更简洁)

修改build.gradle,添加application插件并指定主类:

plugins {
    id 'java'
    id 'application' // 新增插件
}

application {
    mainClass = 'com.scrapper.Scrapper' // 指定主类路径
}

repositories {
    mavenCentral()
}

dependencies {
    implementation 'org.seleniumhq.selenium:selenium-java:4.16.1'
    // selenium-java已包含chrome-driver依赖,无需单独声明
}

执行命令启动程序:

gradlew run

Gradle会自动处理所有依赖,直接运行你的代码。

方案二:生成包含所有依赖的胖jar

修改build.gradle的jar配置,将依赖打包进jar:

plugins {
    id 'java'
}

jar {
    manifest {
        attributes 'Main-Class': 'com.scrapper.Scrapper'
    }
    // 将所有运行时依赖打包进jar
    from {
        configurations.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) }
    }
    // 处理重复文件冲突
    duplicatesStrategy = DuplicatesStrategy.INCLUDE
}

repositories {
    mavenCentral()
}

dependencies {
    implementation 'org.seleniumhq.selenium:selenium-java:4.16.1'
}

执行构建命令:

gradlew build

然后运行生成的胖jar:

java -jar build/libs/[你的jar文件名].jar

3. 后续排查所需补充信息

当前提供的信息已足够定位现有问题,如果后续出现其他报错(如ChromeDriver匹配失败、浏览器启动异常等),可补充:

  • Chrome浏览器的具体版本号
  • gradlew dependencies命令输出的依赖树,确认依赖是否正确引入
  • 新报错的完整堆栈信息

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 15:34:55