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 или эта ошибка находится перед экраном?
Ответы
Ответ 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
.