Spring应用Redis替换JDBC会话管理启动出现NoSuchMethodError求助
问题原因与解决建议
这个NoSuchMethodError本质是Spring Session Data Redis、Spring Data Redis和Jedis三者版本不兼容导致的API调用冲突:
- Spring Session Data Redis 2.2.2.RELEASE依赖的Spring Data Redis 2.x版本中,
RedisConnection.getConfig(String)方法返回java.util.List,但你使用的Jedis 3.10.0对应的Spring Data Redis版本已经修改了该方法的返回类型或签名,导致运行时找不到匹配的方法。
具体解决步骤:
- 版本对齐方案二选一
- 降级Jedis到兼容版本:Spring Session Data Redis 2.2.x适配的Jedis最高稳定版本是2.9.3,直接在依赖管理中指定该版本,同时确保Spring Data Redis版本和Spring Session保持一致(2.2.x系列)。
- 升级Spring Session Data Redis:如果想保留Jedis 3.10.0,需要将Spring Session Data Redis升级到2.6.x及以上版本(该版本开始适配Jedis 3.x),同时同步升级Spring Data Redis到对应版本(2.6.x系列)。
- 排查依赖冲突
执行依赖树命令查看是否有其他依赖引入了不兼容的版本:- Maven:
mvn dependency:tree - Gradle:
./gradlew dependencies
发现冲突后,在对应依赖中排除掉不兼容的Spring Data Redis或Jedis包。
- Maven:
- 避免自定义Bean的API冲突
如果项目中自定义了Redis相关配置Bean(比如RedisKeyspaceNotificationsInitializer),检查代码中是否调用了过时或版本不匹配的API,替换为当前依赖版本支持的方法。
内容的提问来源于stack exchange,提问作者lawd
相关产品推荐
相关产品推荐

