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

Maven引入Selenium4.1.0报NoClassDefFoundError类找不到错误如何解决

你遇到的两个类NotFound报错都是Selenium 3.x升级到4.x版本的架构变动导致的,不需要额外引入多余依赖,按以下步骤修复即可:

  • 第一步:清理Maven依赖配置
    Selenium 4.x的selenium-java已经包含了对应版本的selenium-api、selenium-remote-driver等核心模块,你额外单独引入selenium-api属于冗余配置,还可能触发依赖版本冲突。请修改依赖为以下配置即可:
<dependency>
    <groupId>org.seleniumhq.selenium</groupId>
    <artifactId>selenium-java</artifactId>
    <version>4.1.0</version>
</dependency>

修改完成后执行mvn clean install清空本地缓存的旧版本Selenium包,避免历史缓存导致的类加载异常。如果你使用SpringBoot框架,需要在pom的properties中显式指定<selenium.version>4.1.0</selenium.version>,覆盖SpringBoot父pom内置的旧版本Selenium依赖声明。

  • 第二步:适配Selenium 4.x的API变更
    org.openqa.selenium.internal.FindsById属于Selenium 3.x的内部接口,在4.x版本中已经被完全移除,所有元素定位操作统一使用WebDriver的原生findElement方法即可:
    将原来类似((FindsById) driver).findElementById("xxx")的写法,替换为driver.findElement(By.id("xxx"))即可,其他FindsByName、FindsByXPath等同类内部接口也按同样逻辑替换。

  • 第三步:修复PortProber类找不到问题
    PortProber类在Selenium 4.x中被迁移到selenium-http模块,正常情况下selenium-java会传递引入该模块,如果仍报该类找不到,优先排查是否存在其他依赖传递引入了旧版本的Selenium包:
    执行mvn dependency:tree | grep selenium检查所有Selenium相关依赖的版本,如有低于4.1.0的版本,通过exclusion标签将冲突的旧版本依赖排除即可。如果你的代码里直接调用了PortProber的逻辑,也可以自行实现简单的端口检测逻辑替代对Selenium内部工具类的依赖。

  • 第四步:Docker环境校验
    你当前使用的Chrome 96、ChromeDriver 96和Selenium 4.1.0的版本匹配是正确的,无需修改Docker配置,仅需确保打包后的jar包已经包含了调整后的Selenium 4.x依赖即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 13:27:06