记录解决Maven依赖冲突导致的NoSuchMethodError问题的过程

news2024/11/18 18:22:55

摘要

本文记录了解决 Maven 依赖冲突导致的 NoSuchMethodError 问题的过程。问题出现的原因是多个库包含了 Jackson 库,导致 Jackson 序列化与反序列化时出现 NoSuchMethodError 异常。通过查看依赖树,排除冲突库的方法,最终成功解决了该问题。

问题

Redis进行缓存对象时,代码报错,报错的代码如下:
实体类的字段

    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime createTime;
 redisTemplate.opsForValue().set(key, value, time, TimeUnit.SECONDS);

控制台如下:

java.lang.NoSuchMethodError: com.fasterxml.jackson.datatype.jsr310.ser.JSR310FormattedSerializerBase.findFormatOverrides

我拿这个错误问ChatGPT,它的回答如下:

这个错误出现的原因是你正在尝试调用一个在你所使用的库版本中不存在的方法。具体来说,看起来你正在尝试从com.fasterxml.jackson.datatype.jsr310.ser包中的JSR310FormattedSerializerBase类调用findFormatOverrides方法,但是你所使用的库版本中没有这个方法。

这个错误的可能原因之一是你正在使用一个过时的Jackson库版本,该版本不包括这个方法。要修复这个错误,你可以尝试将Jackson库更新到包含findFormatOverrides方法的更近期的版本。

另一个可能性是你的类路径上有多个Jackson库版本,而你的代码使用的版本不包括findFormatOverrides方法。要修复这个错误,你可以尝试从你的类路径中删除旧版本的Jackson库。

如果你正在使用像Maven或Gradle这样的构建工具,你可以检查你的依赖树,看看你正在使用哪个版本的Jackson库,以及哪些其他库依赖于它。这可以帮助你识别不同库之间的任何冲突或兼容性问题。

总的来说,NoSuchMethodError是一个运行时错误,当你尝试调用在你所使用的库版本中不存在的方法时会出现。要修复这个错误,你需要确保你使用了正确的库版本,并且在你的类路径上没有任何冲突或兼容性问题。

解决过程

确定了是Maven依赖冲突的问题,接下来去解决它。

查看依赖树

借助Maven Helper这个插件去排查问题。
在这里插入图片描述打开pom.xml,点击Text右边的依赖分析,搜索jackson查看有哪些库依赖了jackson在这里插入图片描述通过查看各个jackson依赖发现,jackson-databind有两个库存在jackson-databind,分别是spring-boot-starter-actuatorspring-boot-starter-web,我们只需一个即可,需要排除其中的一个,我选择排除actuator。
在这里插入图片描述

排除冲突库

找到actuator依赖所在pom的位置,查看这个库依赖了jackson的哪些东西,我们全都排除
在这里插入图片描述
发现依赖了jackson库的两个东西,因为这个jackson库是重复的,是冲突,需要去做排除

<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
            <exclusions>
                <exclusion>
                    <groupId>com.fasterxml.jackson.datatype</groupId>
                    <artifactId>jackson-datatype-jsr310</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>com.fasterxml.jackson.core</groupId>
                    <artifactId>jackson-databind</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

结果

解决完冲突之后,启动应用,Redis缓存对象时正常。

"createTime": "2023-03-21 16:58:25"

总结

当开发过程中出现依赖冲突时,可能会导致NoSuchMethodError等运行时异常。下面是一些总结:

1、导致依赖冲突的原因多种多样,比如引入多个版本的同一依赖库、依赖库之间存在版本兼容性问题等等。
2、在遇到NoSuchMethodError等运行时异常时,要仔细分析错误信息,定位到出错的类和方法,找出与之相关的依赖库。
3、查看依赖树是排除依赖冲突的一种有效方法,可以用Maven等工具来查看依赖树,找出冲突的依赖库,并根据需要进行排除或升级。
4、排除依赖冲突可以使用exclusions标签,升级依赖库可以在pom文件中指定新版本号,但要注意兼容性。
5、在解决依赖冲突的过程中,可以将依赖库逐一排除,确定问题出在哪个依赖库,再采取相应的解决措施。
6、对于比较大型的项目,可以使用类似Dependency-Track等工具来监控依赖库的使用情况,及时发现和处理依赖冲突问题。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/445026.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

在职读研理论结合实践,社科院与杜兰大学金融管理硕士助你完成质的飞跃

我们知道&#xff0c;学习不能停留在理论层面&#xff0c;要用于实践才能真正的消化吸收。学习的目的在于运用&#xff0c;实践是检验学习成果的练兵场。社科院与杜兰大学金融管理硕士项目的课程中美授课教师在项目管理委员会的指导下&#xff0c;负责制订金融管理硕士教学方案…

【工程化】之5分钟发布一个Npm包

NPM是一个包管理器&#xff0c; 为js开发人员提供可以在项目中使用的模块&#xff0c;业界有很多流行的开源库&#xff0c;如Lodash&#xff0c;在我们内部也免不了通过对能力的封装打包&#xff0c;快速复用到其他地方去&#xff0c;使用NPM包很简单。您只需使用NPM安装包&…

SHELL中for循环和IF判断的使用

1。编写脚本for1.sh,使用for循环创建20账户&#xff0c;账户名前缀由用户从键盘输入&#xff0c;账户初始密码由用户输入&#xff0c;例如: test1、test2、test3、.....、 test10 2.编写脚本for2.sh,使用for循环,通过ping命令测试网段的主机连通性&#xff0c;网段前3段由用户输…

stable- diffusion新版本V2效果有提升吗?

之前版本是最初版本&#xff0c;不是V2&#xff0c;那么这里就新版本V2进行系列试验&#xff0c;如下&#xff0c;附代码及link 1、text2img from diffusers import StableDiffusionPipeline, DPMSolverMultistepSchedulermodel_id "stabilityai/stable-diffusion-2-1&…

在android项目上集成libyuv库以及使用libyuv库完成camera的缩放,旋转,翻转,裁剪操作

目录 一、下拉google官方的libyuv库代码 二、在android项目中集成libyuv库 1.环境配置 2.拷贝libyuv源码文件 ​编辑3.配置cmake libyuv相关的链接编译等 三、使用libyuv库 1.libyuv库完成camera的旋转 2.libyuv库实现翻转 3.libyuv库实现缩放 4.libyuv库实现裁剪 一…

九龙证券|多巨头竞相布局这个热门赛道,机构一致看好的概念股

华为高阶智能驾驭体系ADS 2.0版本发布。 早前&#xff0c;华为在2023华为智能轿车解决方案发布会上&#xff0c;发布了高阶智能驾驭体系 ADS 2.0。新体系将由 AITO 问界 M5 高阶智能驾驭版首发&#xff0c;并已适配阿维塔 11 全系列以及极狐阿尔法 S 全新 Hi 版等车型。 最近&…

JDBC(java数据库连接)—MySQL

文章目录 1.定义2.优势3.环境准备4.使用jdbc&#xff08;java程序操作数据库&#xff09;5.使用jdbc的操作步骤 1.定义 jdbc是一种用于执行SQL语句的java api&#xff0c;它是java中的数据库连接规范&#xff0c;为java开发人员操作数据库提供了一个标准的api&#xff0c;可以…

【Linux】系统文件接口

目录 一、C文件接口 1、fopen 2、fprintf 3、snprintf 二、系统文件IO 1、open 2、write 3、read 4、C文件接口与系统文件IO的关系 一、C文件接口 1、fopen FILE *fopen(const char *path, const char *mode); fopen 函数返回值类型为 FILE 。参数列表中&#xff0c…

优加DaaS背后,看见新的营销潮

DaaS、融合开放&#xff0c;这是京东云优加对外传递出来的两个最清晰的声音。前者对应的是能力和边界&#xff0c;后者对应的是态度和打法。两者结合&#xff0c;恰构成了京东云优加&#xff0c;或者说京东在营销侧的未来想象力。 作者|皮爷 出品|产业家 “今年我们有接近60%以…

第五章 工厂模式

文章目录 一、简单工厂模式1、传统方式实现披萨订购( 可以忽略)披萨父类 Pizza子类胡椒披萨 PepperPizza子类印度披萨 GreekPizza订购披萨 OrderPizza订购披萨的 客户端 PizzaStore运行结果传统的方式的优缺点&#xff0c;新增子类需要修改的地方牵扯太多传统方式的究极耦合 2、…

YOLOv8 更换骨干网络之 MobileNetV3

论文地址:https://arxiv.org/abs/1905.02244 代码地址:https://github.com/xiaolai-sqlai/mobilenetv3 我们展示了基于互补搜索技术和新颖架构设计相结合的下一代 MobileNets。MobileNetV3通过结合硬件感知网络架构搜索(NAS)和 NetAdapt算法对移动设计如何协同工作,利用互…

BswM模块之Ecu State Handling

文章目录 前言一、ESH是什么&#xff1f;二、基于BswM管理的ECU状态切换流程1.ECU启动2.ECU关闭 总结 前言 BswM – 基础软件模式管理模块&#xff0c; 它的职责是基于简单规则的BSW模块仲裁来自应用层sw - c或其他模块的模式请求&#xff0c;并根据仲裁结果进行相应的操作。 …

QT QPainter 绘制基本图形元件简介

1.基本图形元件 QPainter 提供了很多绘制基本图形的功能&#xff0c;包括点、直线、椭圆、矩形、曲线等&#xff0c;由这些基本的图形可以构成复杂的图形。QPainter 中提供的绘制基本图元的函数如下表所示。每个函数基本上都有多种参数形式&#xff0c;这里只列出函数名&#x…

Elastic Common Schema 和 OpenTelemetry — 无需供应商锁定即可获得更好的可观察性和安全性的途径

作者&#xff1a;Elastic 可观察性和安全团队 在 KubeCon Europe 上&#xff0c;宣布 Elastic Common Schema (ECS) 已被 OpenTelemetry (OTel) 接受作为对该项目的贡献。 目标是将 ECS 和 OpenTelemetry 的语义约定 (SemConv) 融合到一个由 OpenTelemetry 维护的开放模式中。 …

LearnOpenGL-模型加载

1.配置Assimp库。 下载Assimp&#xff0c;解压后得到 assimp-master 文件。在文件中新建一个 build 文件。使用 Cmake 生成工程文件保存在 build 中&#xff0c;从这里下载CMake&#xff0c;下载最新的即可。 打开CMake&#xff0c;选择需要源文件目录和目标目录。修改成适配…

机器学习平台、自研DPU、资源并池,火山引擎发布多云、AI基础设施与增长法宝

1、每十家大模型企业&#xff0c;七家在火山引擎云上。 2、火山引擎大模型训练云平台&#xff0c;支持万卡训练&#xff0c;集群性能提升3倍 3、火山引擎新一代自研DPU&#xff0c;实现计算、存储、网络的全组件卸载&#xff0c;释放更多资源给业务负载。 4、火山引擎与字节国内…

数据库管理软件dbeaver-ce 下载安装并离线配置

文章目录 前言数据库管理软件dbeaver-ce 下载安装并离线配置1. 概述2. 下载3. 安装4. 离线配置驱动jar包5. 链接mysql 前言 如果您觉得有用的话&#xff0c;记得给博主点个赞&#xff0c;评论&#xff0c;收藏一键三连啊&#xff0c;写作不易啊^ _ ^。   而且听说点赞的人每天…

谷歌aab包手机怎么安装教程

一、概述 bundletool是一种底层工具&#xff0c;可供 Android Studio、Android Gradle 插件和 Google Play 用于构建 Android App Bundle 文件并将 app bundle 转换为部署到设备的各种 APK。您也可以将 bundletool作为一种命令行工具&#xff0c;用于自行构建 app bundle 和重新…

【笔试强训编程题】Day2.(排序子序列 100448)和(倒置字符串 69389)

文章目录 前言 一、排序子序列 100448 题目描述 代码实现 二、倒置字符串 69389 题目描述 代码实现 总结 前言 今天让我们来练习两道经典的编程题&#xff01;&#xff01;&#xff01;&#xff01; 一、排序子序列 100448 题目描述&#xff1a;牛牛定义排序子序列为…

平台资金提现解决方案之实现支付宝单笔转账到银行卡功能

大家好&#xff0c;我是小悟 使用场景 不管是做APP、电脑网站、手机网站还是小程序&#xff0c;为了推广基本上都离不开用户分佣的场景。 换句话说就是在其平台内为每个用户设置“电子钱包”功能&#xff0c;而电子钱包在平台那里只是一串数字&#xff0c;这就需要平台为用户…