Handler dispatch failed; nested exception is java.lang.IncompatibleClassChangeError包含【Java8 中LocalDateTime、LocalDate】等属性的对象在JSON格式化过程中可能会出现的异常

  • 异常复现:在将包含LocalDateTime字段类型的Java对象转成JSON时,普遍就是使用com.alibaba.fastjson对LocalDateTime处理出现的错误:
org.springframework.web.util.NestedServletException:
 Handler dispatch failed; nested exception is java.lang.IncompatibleClassChangeError:
 Found interface java.time.chrono.ChronoLocalDateTime, but class was expected
 
  • 我的实际场景
@Data
@EqualsAndHashCode
@Accessors(chain = true)
@TableName("t_xxxx_client_info")
public class ClientInfo {

 	@TableId(type = IdType.AUTO)
    private Long id;

    //客户端编码
    private Long clientCode;

    @TableField("`desc`")
    private String desc;

    private Boolean enabled;

    private Boolean deleted;

    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private LocalDateTime createTime;
    
	//添加这个是想着在将对象存储到Redis时,指定序列化和反序列化格式
	//实际是,Redis在注册Bean时有添加序列化相关操作需要的配置,比如jackson2等
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private LocalDateTime updateTime;
}

  • 解决方案:
    更换pom里面 com.alibaba.fastjson版本

原始版本:

<dependency>
	<groupId>com.alibaba</groupId>
	<artifactId>fastjson</artifactId>
	<version>1.1.28</version>
</dependency>

更换后如下:

<dependency>
	<groupId>com.alibaba</groupId>
	<artifactId>fastjson</artifactId>
	<version>1.2.68</version>
</dependency>

替换后就是Maven的几个操作了,clean。。。

如有错误, 欢迎大佬留言指正…
希望能帮到同学你…
此处为我实际场遇到问题,非绝对解决办法,
Bye Bye~~

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐