Java Lombok未创建默认构造函数导致jackson数据绑定失败

Java Lombok未创建默认构造函数导致jackson数据绑定失败,java,jackson,lombok,jackson-databind,Java,Jackson,Lombok,Jackson Databind,我有一个POJO @Data @AllArgsConstrcutor class Test { T field1, T field2, } 当我试图用jackson databind 2.9.3反序列化它时,它是 失败的com.fasterxml.jackson.databind.exc.InvalidDefinitionException: 无法构造com.mypackage.Test的实例(没有创建者,如 默认构造,存在):无法从对象值反序列化(否 [Source:(字符串)处的委托(或

我有一个POJO

@Data
@AllArgsConstrcutor
class Test {

T field1,
T field2,
}
当我试图用jackson databind 2.9.3反序列化它时,它是

失败的com.fasterxml.jackson.databind.exc.InvalidDefinitionException: 无法构造
com.mypackage.Test的实例(没有创建者,如
默认构造,存在):无法从对象值反序列化(否
[Source:(字符串)处的委托(或基于属性的创建者)


当然,
Lombok
不会生成默认构造函数

通过:
@AllArgsConstrcutor
您可以说希望它生成一个包含所有提供参数的构造函数。 因为POJO本身只需要一个构造函数,所以就是它


如果希望生成默认构造函数,请添加以下内容:
@noargsconstuctor

@allargsconstuctor
为类的每个字段创建一个带参数的构造函数(因此,在您的情况下,您将获得
测试(T,T)

对于默认构造函数,应添加
@noargsconstuctor
注释:

@Data
@AllArgsConstrcutor // Won't be used by Jackson, but there's no harm in it, per-se
@NoArgsConstructor // Here!
class Test {
    T field1;
    T field2;
}

您必须在类的顶部使用@noargsconstuctor注释。在我将lombok升级到1.16之前,该注释工作正常。22@Sakalya,尝试使用lombok最新版本1.18.2,如果1.16.22中出现错误,应该可以正常工作。此外,它是向后兼容的,所以不要担心。在我将lombok升级到1.16.22Thi之前,这工作正常在我将龙目山升级到1.16之前,s运行良好。22@Sakalya不,它没有。由于您拼写错误“AllArgsConstructor”,您的代码甚至无法编译,更不用说运行和生成不应该编译的构造函数了。这也不是Java文件中阻止编译的唯一问题。这只是一个键入错误