SpringBoot整合Spring Data Redis和Jedis报错:java.lang.NoClassDefFoundError: redis/clients/jedis/util/Pool

报错截图

在这里插入图片描述
已整合jar包和编写配置类后,在测试类中测试报错:java.lang.NoClassDefFoundError: redis/clients/jedis/util/Pool

一般来说该种错误都是因为缺少相关jar包,或者是相关的class在运行过程中没有被检测到才会弹出

解决思路

首先也是先参照别人的代码进行整合测试,所以事先考虑到整合过程中可能会出现版本问题,经过查询后,发现Spring Data RedisJedis之间的确存在版本的对应问题。
在这里插入图片描述

然而百度发现一大堆都是复制粘贴 :),然后StackOverflow找到一个相关回答:https://stackoverflow.com/questions/55183019/redis-session-with-java-spring-boot
在这里插入图片描述
好了,我现在确定是版本之间的兼容问题了,再观察我模仿的项目pom文件:

在这里插入图片描述
在这里插入图片描述
版本对应为:spring boot 2.1.4 -> jedis 2.9.0

再观察我自己的pom文件:
在这里插入图片描述
很明显在spring boot的版本上不一致,再结合StackOverflow上看到的版本对应,则应该存在 spring boot 2.1.x -> jedis 2.9.x 的关系,而且spring boot data的版本是跟随着spring boot更新的,所以版本的冲突问题出现在这里。我自己的spring boot版本是2.2.x,故spring boot data 的版本也是如此,所以我选择导入jedis的最新版本3.2.0,毫无意外成功运行。

解决方法

spring-data-redis和jedis之间存在版本对应关系,在spring-data-redis的官方文档中有(然而我没找到),经过查看前人的解决方法和自己的解决方式,得出如下结论:

spring-data-redis版本jedis版本
2.1.x2.9.x
2.2.x3.x

如果最后还报同样的错误,可以先观察一下自己的版本,选择升高或者降低jedis的版本。

  • 12
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
引用\[1\]:Caused by: java.lang.ClassNotFoundException: redis.clients.jedis.UnifiedJedis at java.net.URLClassLoader$1.run(URLClassLoader.java:372) ~\[na:1.8.0_20\] at java.net.URLClassLoader$1.run(URLClassLoader.java:361) ~\[na:1.8.0_20\] at java.security.AccessController.doPrivileged(Native Method) ~\[na:1.8.0_20\] at java.net.URLClassLoader.findClass(URLClassLoader.java:360) ~\[na:1.8.0_20\] at java.lang.ClassLoader.loadClass(ClassLoader.java:424) ~\[na:1.8.0_20\] at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) ~\[na:1.8.0_20\] at java.lang.ClassLoader.loadClass(ClassLoader.java:357) ~\[na:1.8.0_20\] ... 56 common frames omitted 引用\[2\]:只要将redis启动器中的lettuce排除在外,注意版本号不要写,默认会继承父项目的版本号以防jar包冲突。 <!-- redis启动器--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> <exclusions> <exclusion> <groupId>io.lettuce</groupId> <artifactId>lettuce-core</artifactId> </exclusion> </exclusions> </dependency> <!-- jedis连接池--> <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> </dependency> 引用\[3\]:在pom中导入jetcache坐标中的redisspringboot版本冲突导致, <dependency> <groupId>com.alicp.jetcache</groupId> <artifactId>jetcache-starter-redis</artifactId> <version>2.7.0.M1</version> <!--这里版本不唯一,也可能是别的版本--> </dependency> 解决方法: 问题:Caused by: java.lang.NoClassDefFoundError: redis/clients/jedis/ConnectionPoolConfig 回答: 这个错误是由于缺少redis.clients.jedis.ConnectionPoolConfig类引起的。根据引用\[1\],可能是由于缺少redis.clients.jedis.UnifiedJedis类导致的。解决这个问题的方法有两种。一种是根据引用\[2\],在项目的pom文件中排除lettuce-core依赖,然后添加jedis依赖。另一种是根据引用\[3\],检查项目中的redisspringboot版本是否冲突,如果有冲突,可以尝试升级或降级其中一个版本以解决冲突。 #### 引用[.reference_title] - *1* *3* [【Spring常见错误】java.lang.NoClassDefFoundError: redis/clients/jedis/UnifiedJedis](https://blog.csdn.net/qq_52360069/article/details/125275138)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [springboot整合redis中 出现Caused by: java.lang.NoClassDefFoundError: redis/clients/jedis/util/Pool](https://blog.csdn.net/qq_45059663/article/details/113608498)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值