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

添加ZXing依赖后Java Selenium报IllegalAccessError问题求助

解决Selenium与ZXing的依赖冲突问题

我来帮你梳理这个问题的根源和可行解决方案:

问题回顾

你在基于Java的Selenium测试项目中引入ZXing二维码扫描库后,哪怕没有编写任何ZXing相关代码,启动ChromeDriver时也抛出了java.lang.IllegalAccessError,错误指向Selenium的UrlChecker类尝试访问Guava的SimpleTimeLimiter构造方法失败。这个问题的核心确实是依赖冲突。

原因分析

报错的本质是Guava(Google核心工具库)的版本不一致:

  • Selenium(尤其是你之前使用的新版本)依赖特定版本的Guava,其中SimpleTimeLimiter的构造方法签名或访问权限是固定的
  • ZXing 3.3.1依赖的Guava版本与Selenium的依赖版本不兼容,Gradle自动解析依赖时会优先选择某一版本,导致Selenium需要的Guava方法无法正常访问

解决方案

方案1:降级依赖版本(你已验证有效)

通过使用兼容性经过验证的旧版本组合,可以直接绕过冲突:
在build.gradle中指定以下依赖:

// 降级Selenium到兼容版本
implementation 'org.seleniumhq.selenium:selenium-java:3.0.1'
// 降级ZXing到对应兼容版本
implementation 'com.google.zxing:zxingorg:3.2.1'

方案2:排除冲突的Guava依赖(无需降级,推荐)

如果想保留较新的Selenium或ZXing版本,可以在引入ZXing时排除它自带的Guava依赖,强制使用Selenium依赖的Guava版本:

implementation('com.google.zxing:zxingorg:3.3.1') {
    // 排除ZXing依赖的Guava,避免与Selenium的版本冲突
    exclude group: 'com.google.guava', module: 'guava'
}

这样配置后,项目会复用Selenium依赖的Guava版本,既保留新版本功能,又解决了冲突问题。

方案3:强制统一Guava版本

如果排除依赖后仍有异常,可以强制指定项目中Guava的版本,确保所有依赖都使用同一个兼容版本:

configurations.all {
    resolutionStrategy.force 'com.google.guava:guava:23.0' // 选择与你的Selenium版本兼容的Guava版本
}

你可以根据自己使用的Selenium版本查找对应兼容的Guava版本(比如Selenium 3.x通常兼容Guava 23.x系列,Selenium 4.x则需要更高版本)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 06:35:42