Подтвердить что ты не робот

Android-приложение AllArgsConstructor от lombok не найдено

Когда я создаю новый класс Java с одним или несколькими полями и присоединяю к нему аннотацию @AllArgsConstructor от lombok, тогда я получаю это сообщение

Error:(9, 1) error: cannot find symbol class ConstructorProperties

из консоли Gradle Build. Я смог воспроизвести это, создав новый пустой проект Android с этой конфигурацией.

Класс (никогда не используется или не создается)

@lombok.AllArgsConstructor
public class Model {
    int foo;
    String bar;
}

build.gradle:

dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:21.0.3'
provided 'org.projectlombok:lombok:1.14.8'
}

@Getter и @Setter из lombok не вызывают никаких проблем, и даже @NoArgsConstructor не упоминается gradle, так что AllArgsConstructor, если полей нет.

Это ошибка от Lombok или эта ошибка находится перед экраном?

4b9b3361

Ответ 1

Ломбок генерирует @ConstructorProperties по умолчанию для всех сгенерированных конструкторов. На Android эта аннотация недоступна. Как уже упоминалось в документации, можно подавить генерацию либо указав suppressConstructorProperties=true для каждого @XxxArgsConstructor, либо используя следующую строку на высоком уровне lombok.config файл:

lombok.anyConstructor.suppressConstructorProperties = true

Раскрытие информации: Я разработчик Lombok

Ответ 2

Вам нужно добавить подавление в ваших AllArgsConstructors. Если вы не хотите добавлять новый файл конфигурации, вы можете просто сделать это:

@AllArgsConstructor(suppressConstructorProperties = true)

Раскрытие информации: я не разработчик Lombok: D

Ответ 3

Также:

Если вы нацеливаете Java 8 в своем проекте Android (например, с помощью retrolambda), эта ошибка не появится.

Ответ 4

@AllArgsConstructor(suppressConstructorProperties = true) решение больше не работает. Если вы попробуете это, вы получите следующее:

Эта устаревшая функция больше не поддерживается. Убери это; ты можешь создать файл lombok.config с 'lombok.anyConstructor.suppressConstructorProperties = true'.

Рабочее решение добавляет файл lombok.anyConstructor.suppressConstructorProperties = true в lombok.config.