从Java 10升级到Java 11,并将gradle 4.10升级到gradle。 5.2:“变量未在默认构造函数中初始化”

问题描述 投票:6回答:2

我有一个简单的对象:

@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。现在我不知道怎么了。

java gradle lombok java-11 java-10
2个回答
3
投票

在gradle 5中,您需要单独列出注释处理器。也许那是问题所在?

可以在这里找到示例gradle构建:

https://projectlombok.org/setup/gradle


3
投票

[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"
}
© www.soinside.com 2019 - 2024. All rights reserved.