Spring boot

SpringBoot整合Spring Data Redis和Je

2021-02-23  本文已影响0人  三也视界

报错
Factory method 'redisConnectionFactory' threw exception; nested exception is 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文件:


image.png
image.png

很明显在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.x 2.9.x
2.2.x 3.x

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

上一篇下一篇

猜你喜欢

热点阅读