欢迎您访问365答案网,请分享给你的朋友!
生活常识 学习资料

引入RedisTemplate时的异常:NoClassDefFoundError:com/fasterxml/jackson/core/JsonProcessingException

时间:2023-06-07
异常场景

今天想测一个RedisTemplate的问题,于是用 Spring Initializr 创建了一个 Spring Boot 项目,并引入了 Spring Data Redis。

pom文件中会给我引入对应的包:

org.springframework.boot spring-boot-starter-data-redis

自定义 RedisTemplate 配置,设置 Value 序列化方式为 GenericJackson2JsonRedisSerializer

@Configurationpublic class RedisTemplateConfig { @Bean public RedisTemplate redisTemplate(RedisConnectionFactory redisConnectionFactory) { RedisTemplate redisTemplate = new RedisTemplate<>(); redisTemplate.setConnectionFactory(redisConnectionFactory); redisTemplate.setKeySerializer(new StringRedisSerializer()); redisTemplate.setValueSerializer(new GenericJackson2JsonRedisSerializer()); redisTemplate.setHashKeySerializer(new StringRedisSerializer()); redisTemplate.setHashValueSerializer(new GenericJackson2JsonRedisSerializer()); return redisTemplate; }}

简单配好后启动项目,直接提示找不到Jackson相关类的异常:java.lang.NoClassDefFoundError: com/fasterxml/jackson/core/JsonProcessingException

下面截取了部分错误日志

Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'redisTemplate' defined in class path resource [com/example/redistemplatesourcecodedemo/config/RedisTemplateConfig.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.data.redis.core.RedisTemplate]: Factory method 'redisTemplate' threw exception; nested exception is java.lang.NoClassDefFoundError: com/fasterxml/jackson/core/JsonProcessingExceptionat org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:658)

解决方法

看了下spring-boot-starter-data-redis的pom,确实没有引入Jackson,那我们就引入。
Spring 官方已经有了一个spring-boot-starter-json依赖,我们直接引进来:

org.springframework.boot spring-boot-starter-json

再次启动,问题解决。

问题回顾

之前项目中没有增加此依赖,也正常啊,是为什么呢?
经过一番排查,原来之前项目引入了spring-boot-starter-web依赖,它是pom已经引入了该依赖了。

Copyright © 2016-2020 www.365daan.com All Rights Reserved. 365答案网 版权所有 备案号:

部分内容来自互联网,版权归原作者所有,如有冒犯请联系我们,我们将在三个工作时内妥善处理。