我有一个简单的对象:
@Value
@Builder
public class User implements Serializable {
private final String userId;
private final String email;
private final String name;
}
这里没有魔术,除了我在此处为Lombok 1.18.2
和@Value
注释使用@Builder
的事实。 Java 10和Gradle 4.10都运行良好。现在我升级到Java 11和Gradle 5.2,突然我得到:
> Task :application:compileJava
/src/application/src/main/java/com/rbb/tutor/user/model/User.java:12: error: variable userId not initialized in the default constructor
private final String userId;
^
/src/application/src/main/java/com/rbb/tutor/user/model/User.java:13: error: variable email not initialized in the default constructor
private final String email;
^
/src/application/src/main/java/com/rbb/tutor/user/model/User.java:14: error: variable name not initialized in the default constructor
private final String name;
^
我真的不知道该怎么办。首先,我认为这是lombok的问题,但我升级到了支持Java 11的1.18.6
。现在我不知道怎么了。
[Gradle 5 release具有依赖项的新annotationProcessor()
配置(lombok issue)
如下更改您的build.gradle
:
annotationProcessor("org.projectlombok:lombok:1.18.6")
compileOnly("org.projectlombok:lombok:1.18.6")
或使用推荐的插件-https://plugins.gradle.org/plugin/io.freefair.lombok
plugins {
id "io.freefair.lombok" version "3.1.0"
}