点击登录,精彩内容等着你

spingboot整合jedis发生意外,别盲目升级版本

全栈侠客

2022-10-08
整合Jedis4的时候,构建JedisConnectionFactory的时候,发生异常:NoClassDefFoundError: jedis/clients/jedis/GeoUnit

关键字:Jedis RedisTemplate GeoUnit
关联项目:精益编程框架
关联类:com.leanboot.vredis.RedisConfig.java

一、背景

精益编程框架系统,在整合最新的redis的时候,采用Jedis作为redis的客户端,结果发生了一连串的错误。

1.背景知识

  1. Jedis是Redis官方推荐的面向Java的操作Redis的客户端
    • Jedis具有自己的一套操作redis的封装api,例如连接池等
    • Jedis也是具有自己一定的生态,版本更新迭代还是挺快的,截止今天2022-10-08,最新版本4.2.3,最新信息请查看: https://github.com/redis/jedis
  2. SpringBoot采用springDataRedis来操作redis,而RedisTemplate是springDataRedis对JedisApi的高度封装

总的来说:Springboot整合redis有两种方式:Jedis与RedisTemplate

2.引入redis与jedis的错误配置

  1. <!--redis-->
  2. <dependency>
  3. <groupId>org.springframework.boot</groupId>
  4. <artifactId>spring-boot-starter-data-redis</artifactId>
  5. </dependency>
  6. <dependency>
  7. <groupId>redis.clients</groupId>
  8. <artifactId>jedis</artifactId>
  9. <version>4.2.3</version>
  10. </dependency>

错误提示

构建连接工厂JedisConnectionFactory初始化的时候,(项目启动)发生以下异常:
java.lang.NoClassDefFoundError: redis/clients/jedis/GeoUnit

错误分析:

3.错误处理

正常的使用方法是:把Jedis的版本号去掉

  1. <!--redis-->
  2. <dependency>
  3. <groupId>redis.clients</groupId>
  4. <artifactId>jedis</artifactId>
  5. <!--<version>4.2.3</version>-->
  6. </dependency>

springboot所谓的自动配置,无论是版本怎么迭代,其实内部有一个机制,对于一些特殊的第三方jar包,就是有一个默认的关联的版本号;


从idea或者eclipse中,打开pom.xml中,直接按住ctrl + 单击”jedis
就能打开,查看关联的Jedis的版本号;如我目前使用的是:springboot 2.7.4,关联的jedis的版本号为:

二、总结

  • 有时候,关联第三方的jar包,并不是越新越好
  • 会用小技巧与一定的度娘搜索技巧,能快速定位你的问题
阅读 2176     最后编辑 2022-10-08 15:33
文章补充
评论(0) 发表新评论
  • ...暂无评论...

我是有底线的 评论与点赞5分钟更新一次
回复评论
取消关闭

请先登录