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
相关产品推荐
相关产品推荐

