NoSuchMethodError - Интеллидж и ломбок - PullRequest
0 голосов
/ 11 декабря 2018

У меня странная проблема в IntelliJ.Я использую Lombok (1.18.2), IntelliJ (2018.2.2) и JUnit 5 в многомодульном проекте Gradle 4.

Мне потребовались часы, чтобы воспроизвести это.

1) Запустить все тестовые примеры с покрытием.

2) Придет всплывающее окно

enter image description here

3) если я нажму «ОК» и повторно запущу тестовый блок.Это приведет к сбою java.lang.NoSuchMethodError для геттеров и сеттеров.

4) удаления Lombok и генерации геттеров и сеттеров после того, как это не даст никакого эффекта.

Попробовал все, чтобы это исправить (включить процессор аннотаций, плагин 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 Ответ

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

Я решил эту проблему, внеся следующие изменения:

1: включить обработку аннотаций в Intellij. (Файл | Настройки | Построение, Выполнение, Развертывание | Компилятор | Процессоры аннотаций)

2:выберите путь процессора и укажите на lombok-1.18.4.jar, потому что я просто хочу включить его для Lombok, а не для Mapstruct.Если этот параметр включен для обоих, он генерирует классы Mapstruct в расположении по умолчанию.

3: в файле «Неправильный кэш и перезапуск»

4: в параметре сборки «Перестроить проект»

Это решит это.Мне потребовалось некоторое время, чтобы заставить его работать в Intellij.

...