为了账号安全,请及时绑定邮箱和手机立即绑定

使用 gradle 运行时,杰克逊子类型的反序列化失败

使用 gradle 运行时,杰克逊子类型的反序列化失败

绝地无双 2022-07-06 18:30:52
使用 gradle 运行集成测试时出现异常。我得到的例外是:com.fasterxml.jackson.databind.JsonMappingException: Can not construct instance of AbstractCommonDetails: abstract types either need to be mapped to concrete types, have custom deserializer, or contain additional type informationSummary 类对我试图反序列化的细节有以下注释:@Datapublic class Summary {  @JsonTypeInfo(use = NAME, include = PROPERTY, property = "@type")  @JsonSubTypes({      @JsonSubTypes.Type(value = CardDetails.class, name = "CARD")  })  private AbstractCommonDetails details;}AbstractCommonDetails 如下所示:@Getter@Setterpublic abstract class AbstractCommonDetails {  private Long id;  public abstract String getPaymentMethod();}并且 CardDetails 具有注释和方法的@JsonTypeName("CARD")实现。@DatagetPaymentMethodObjectMapper 的配置和反序列化如下:new ObjectMapper().findAndRegisterModules().readValue(IOUtils.toString(inputStream, "UTF-8"), Summary.class);和示例 json:{  "details":{    "@type":"CARD",    "amount":"10.00"}奇怪的是 - 将集成测试作为 Junit 测试运行成功,但是当使用gradlew test命令运行相同的集成测试时,它会失败,并出现前面提到的异常。可能是什么原因?
查看完整描述

1 回答

?
慕森卡

TA贡献1806条经验 获得超8个赞

如果测试有效IDE但无法正常工作,gradle则意味着您需要查看gradle配置。您使用Lambook,因此您需要确保gradle配置知道Lambok注释。

查看完整回答
反对 回复 2022-07-06
  • 1 回答
  • 0 关注
  • 208 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号