Обновление с java 10 до java 11 и gradle 4.10 до gradle.5.2: «Переменная не инициализирована в конструкторе по умолчанию» - PullRequest
0 голосов
/ 19 февраля 2019

У меня есть простой объект:

@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, но я обновился до 1.18.6, который поддерживает Java 11. Теперь у меня нет новых идей, что не так.

Ответы [ 2 ]

0 голосов
/ 19 февраля 2019

Выпуск Gradle 5 имеет новую annotationProcessor() конфигурацию для зависимостей ( выпуск lombok )

Измените build.gralde следующим образом:

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"
}
0 голосов
/ 19 февраля 2019

В 5-м классе вам нужно перечислить процессоры аннотаций отдельно.Может быть, в этом проблема?

Пример сборки Gradle можно найти здесь:

https://projectlombok.org/setup/gradle

...