NoSuchMethodError - Интеллидж и ломбок
Я получаю странную проблему в IntelliJ. Я использую Lombok (1.18.2), IntelliJ(2018.2.2) и JUnit 5 в мультимодульном проекте Gradle 4.
Мне потребовались часы, чтобы повторить это.
1) Запустите все тестовые примеры с покрытием.
2) Появится всплывающее окно
3) если я нажму "ОК" и повторно запущу тестовый блок. Это начнет терпеть неудачу с java.lang.NoSuchMethodError для методов получения и установки.
4) удаление Ломбока и генерация геттера и сеттера после этого также не имеет никакого эффекта.
Попробовал все, чтобы это исправить (включить процессор аннотаций, плагин lombok, чистую сборку), но не повезло.
РЕДАКТИРОВАТЬ 1:
Root build.gradle:
implementation 'org.projectlombok:lombok:1.18.2'
testImplementation('org.junit.jupiter:junit-jupiter-api:5.3.1')
testImplementation('org.junit.jupiter:junit-jupiter-params:5.3.1')
testRuntime('org.junit.jupiter:junit-jupiter-engine:5.3.1')
testImplementation("org.junit.platform:junit-platform-launcher:1.3.1")
testImplementation("org.junit.vintage:junit-vintage-engine:5.3.1")
testImplementation "org.mockito:mockito-core:2.+"
testImplementation('org.mockito:mockito-junit-jupiter:2.22.0')
подпроект build.gradle
compileOnly 'org.projectlombok:lombok'
annotationProcessor 'org.projectlombok:lombok'
1 ответ
Я решил эту проблему, внеся следующие изменения:
1: Включить обработку аннотаций в Intellij.(Файл | Настройки | Построение, Выполнение, Развертывание | Компилятор | Процессоры аннотаций)
2: выберите путь процессора и укажите на lombok-1.18.4.jar, потому что я просто хочу включить его для Lombok, а не для Mapstruct. Если этот параметр включен, он генерирует классы Mapstruct в расположении по умолчанию.
3: под файлом "Неправильный кэш и перезапуск"
4: под опцией "Перестроить проект"
Это решит это. Мне понадобилось некоторое время, чтобы заставить его работать в Intellij.