现象

项目依赖selenium-java的4.32版本,但是未发现org.openqa.selenium.devtools.DevTools类。如下所示:

问题排查

定位问题

第一反应肯定是依赖冲突了,第一步先打开idea的maven工具看一下依赖树,结果如下:

从图中可以看到4.32依赖了很多3.14.0的依赖,并且没有任何omitted for duplicate 类似的提示, 怀疑selenium-java是不是本身走的就是部分升级的路子,点进selenium-java查看其POM文件发现其依赖如下:

显然selenium-java的4.32版本全部依赖都是显示的声名的4.32版本,这里基本可以确认依赖存在冲突,可以确定存在依赖冲突。但是我们通过Idea依赖树看,没有omitted for duplicate 提示,这就有点坑了。

冲突定位

既然有了冲突剩下的就是定位冲突,先引入依赖分析插件,如下所示(不引入分析不出来任何问题):

执行命令mvn dependency:resolve -Dincludes=org.seleniumhq.selenium 查看依赖树如下:

可以看到有很多omitted for duplicate说明依赖确实存在问题,但是只有selenium-java这一个依赖树。看起来又不像有冲突的样子,但是却有version managed这样的提示,猜测冲突来源于maven依赖管理dependencyManagement声名。执行命令mvn help:effective-pom 查看最终项目所有依赖,如下所示:

可以看到在dependencyManagement声名的selenium全是3.14。然后定位发现Sspring-boot-starter-parent的2.1.7版本就有selenium的版本管理。所以Springboot 确实做了很多依赖管理,连selenium都有,恐怖如斯,学到了。至此问题算是定位到了。

问题解决

既然知道了问题所在,直接升级springboot或者显示的指定selenium-java依赖的版本即可,如下所示:


<!-- selenium 组件 -->
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>4.32.0</version>
</dependency>
<!--核心模块-->
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-api</artifactId>
<version>4.32.0</version>
</dependency>
<!-- google 依赖 -->
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-chrome-driver</artifactId>
<version>4.32.0</version>
</dependency>
<!-- cdp 接口依赖 -->
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-devtools-v136</artifactId>
<version>4.32.0</version>
</dependency>
<!-- cdp相关 -->
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-remote-driver</artifactId>
<version>4.32.0</version>
</dependency>
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-support</artifactId>
<version>4.32.0</version>
</dependency>

记录一次maven依赖冲突的解决的更多相关文章

  1. maven依赖冲突以及解决方法

    什么是依赖冲突 依赖冲突是指项目依赖的某一个jar包,有多个不同的版本,因而造成类包版本冲突 依赖冲突的原因 依赖冲突很经常是类包之间的间接依赖引起的.每个显式声明的类包都会依赖于一些其它的隐式类包, ...

  2. 解决maven依赖冲突问题

    解决maven依赖冲突问题 1.idea 安装maven helper插件 2.打开pom.xml文件 底部多出一个Dependency Analyzer选项 点开这个选项 找到冲突,点击右键,选择E ...

  3. 【核心】project(idea文件)、module(iml文件)到SSM集成、热部署、Tomcat启动、MAVEN依赖冲突

    http://wiki.jikexueyuan.com/project/intellij-idea-tutorial/project-composition-introduce.html 在 Inte ...

  4. 说说maven依赖冲突,依赖调解,依赖传递和依赖范围

    说maven依赖冲突之前需要先说说maven的 依赖传递. 依赖传递 当前项目引入了一个依赖,该依赖的依赖也会被引入项目.更加准确的说法是,maven会解析直接依赖的POM,将那些必要的间接依赖,以传 ...

  5. IDEA 解决 Maven 依赖冲突的高能神器,这一篇够不够?

    ​ 1.何为依赖冲突 Maven是个很好用的依赖管理工具,但是再好的东西也不是完美的.Maven的依赖机制会导致Jar包的冲突.举个例子,现在你的项目中,使用了两个Jar包,分别是A和B.现在A需要依 ...

  6. 解决maven依赖冲突,这篇就够了!

    一.前言 什么是依赖冲突 依赖冲突是指项目依赖的某一个jar包,有多个不同的版本,因而造成了包版本冲突. 依赖冲突的原因 我们在maven项目的pom中 一般会引用许许多多的dependency.例如 ...

  7. Maven依赖冲突解决总结

    转载请注明出处: 1.Jar包冲突的通常表现 Jar包冲突往往是很诡异的事情,也很难排查,但也会有一些共性的表现. 抛出java.lang.ClassNotFoundException:典型异常,主要 ...

  8. 如何快速的解决Maven依赖冲突

    为什么会出现依赖冲突 首先要说明Maven的依赖管理,具体的可以参考这边 Maven学习——依赖管理 这篇文章,maven在依赖冲管理中有一下几个原则. 依赖是使用Maven坐标来定位的,而Maven ...

  9. Maven - 依赖冲突

    依赖冲突有两个规则: 短路优先范例:A -> B -> C -> X-2.0.0A -> D -> X-1.0.0那么A -> X-1.0.0这个版本 先声明优先范 ...

  10. maven 依赖冲突的问题

    如果原始系统的jarA依赖jarB1.0 而新引入的jarC依赖jarB2.0 导致系统启动报错,提示冲突,这时为了保证原始系统的稳定性, 在pom.xml文件中引入jarC时,需要exclude掉j ...

随机推荐

  1. KaFka 安装与基本使用

    学了有一段时间的大数据了,学习新的组件,大部分安装可以分为三步:上传解压,配置文件,启动. 分享一下我的kafka安装包: 链接:https://pan.baidu.com/s/1fbydwZwcYy ...

  2. Win10打开IE自动跳转至Edge解决办法

    WIN + R输入inetcpl.cpl弹出Internet属性对话窗口 点击上面菜单中的[高级]选项 滑动右侧滚动条,找到[浏览]项下面的[启用第三方浏览器拓展*]并取消勾选 双击IE浏览器图标测试 ...

  3. 【独立开发作品】SlideBrowser 一个轻量的滑动浏览器,给你不一样的交互体验

    产品介绍 SlideBrowser是一个滑动浏览器,当你鼠标移动到屏幕边缘,自动出现,当失焦时自动隐藏. 使用场景 在应用全屏模式下查询资料.问 GPT 等 记录一些待办事项或者笔记 查看股市.币市信 ...

  4. 依赖注入(DI)与控制反转(IoC)

    .wj_nav { display: inline-block; width: 100%; margin-bottom: 0.375rem } .wj_nav span { display: inli ...

  5. 在GNU Hurd中感受Mach微内核的进程通信(IPC)

    什么是GNU Hurd 具体的时间线已经在官方维基页面得到详细描述[0],笔者在此就简单叙述一下.在1983年Richard Stallman开启了GNU项目,目的是创建一个自由的操作系统[1].在接 ...

  6. OSPF协议报文

    OSPF(Open Shortest Path First,开放最短路径优先)是一种内部网关协议(Interior Gateway Protocol,IGP),用于在同一个自治系统(Autonomou ...

  7. FDConnection lost后的处理right here

  8. docker发布简单python服务

    进入机器创建一个目录mkdir dockerbuild1.编写简单flask代码vi flaskapp.pyfrom flask import Flaskimport os app = Flask(_ ...

  9. Java+Appium+Junit实现app自动化demo

    1.新建maven工程和引入库 步骤参考https://www.cnblogs.com/wanyuan/p/16408758.html 2.编写代码 代码如下: import org.junit.Af ...

  10. WIN10 由于找不到mfc140u.dll,无法继续执行代码

    最近遇到win10提示mfc140u.dll找不到,总是弹窗的问题. 网上一番百度搜索后发现给的方法都不能很好的解决,DLL修复工具需登录且收费 去下载mfc140u.dll 根本不可能找到,都是垃圾 ...