nested exception is java.lang.NoClassDefFoundError: com/fasterxml/jackson/databind/ObjectMapper
在公司framework中定義了springdataredis key及value的序列化方式,
public RedisTemplate<Object, Object> redisTemplate(
RedisConnectionFactory redisConnectionFactory)
throws UnknownHostException {
RedisTemplate<Object, Object> template = new RedisTemplate<Object, Object> ();
template.setConnectionFactory ( redisConnectionFactory );
template.setKeySerializer ( myStringSerializer() );
template.setHashKeySerializer ( myStringSerializer () );
// 使用Jackson2JsonRedisSerialize 替換默認(rèn)序列化
Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class);
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.setVisibility( PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
objectMapper.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
jackson2JsonRedisSerializer.setObjectMapper(objectMapper);
template.setValueSerializer ( jackson2JsonRedisSerializer );
template.setHashValueSerializer ( jackson2JsonRedisSerializer );
template.afterPropertiesSet ();
return template;
}
測試類運行OK ,可以修改成功
但是其他項目集成framework,項目啟動時報錯 找不到Jackson相關(guān)jar包。
開始查找問題,開始一直以為是jar包沖突或者版本不對,嘗試了 很多次 都不能解決問題。
后面直接去解壓已經(jīng)打好的war包,進(jìn)入lib目錄 查找jackson jar版本時發(fā)現(xiàn) maven并沒有把jackson 相關(guān)jar包加入其中,后面更改pom文件
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.8.2</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>2.8.0</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.8.2</version>
<scope>runtime</scope>
</dependency>