构造函数SomeClass()已在类SomeClass中定义

Jan*_*sen 5 java lombok spring-boot

我刚刚将Spring Boot 1.5.13应用程序(使用Lombok)升级到Spring Boot 1.5.14,但现在无法使用以下类型的错误进行编译:

constructor SomeClass() is already defined in class SomeClass
Run Code Online (Sandbox Code Playgroud)

对于我的每个POJO,例如,

@Data
@NoArgsConstructor
public class SomeClass {
    private String someProperty;
}
Run Code Online (Sandbox Code Playgroud)

Jan*_*sen 14

这是Lombok 1.6.22中的一个错误; 将Lombok升级到1.18.0:

<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>1.18.0</version>
    <scope>provided</scope>
</dependency>
Run Code Online (Sandbox Code Playgroud)

或者,作为解决方法,更改注释的顺序:

@NoArgsConstructor
@Data
public class SomeClass {
    private String someProperty;
}
Run Code Online (Sandbox Code Playgroud)

细节:

此错误的根本原因是Lombok 1.16.22中的错误.Spring Boot 1.5.13使用没有此bug的Lombok 1.16.20,但Spring Boot 1.5.14将Lombok依赖更新为1.16.22 - 遗憾的是,Lombok项目不符合SEMVER,后者触发了这个bug.