Ошибка компиляции из-за Lombok - PullRequest
0 голосов
/ 08 февраля 2020

У меня есть приложение springboot, использующее gradle в качестве инструмента для сборки, а также lombok.

Когда я запускаю команду ./gradlew build, то задача compileJava завершается неудачно со многими сообщениями, связанными с аннотациями lombok. Примеры:

> Task :compileJava
\my\path\ResolverDelegator.java:12: error: cannot find symbol
import static com.business.lunch.dto.OfferContent.builder;
^
  symbol:   static builder
  location: class OfferContent
\my\path\LunchOfferService.java:40: error: cannot find symbol
        lunchOfferRepository.findByLocation(lunchOffer.getLocation())
                                                      ^
  symbol:   method getLocation()
  location: variable lunchOffer of type LunchOffer
\my\path\ResolverDelegator.java:60: error: cannot find symbol
        return builder()
               ^
  symbol:   method builder()
  location: class ResolverDelegator

...

> Task :compileJava FAILED

FAILURE: Build failed with an exception.

Моя оболочка Gradle настроена на использование Gradle 6.1 distributionUrl=https\://services.gradle.org/distributions/gradle-6.1-bin.zip

Версия Lombok - 1.18.12, и я упоминаю, что у меня есть следующие записи в блоке dependencies из мой build.gradle файл:

    compileOnly 'org.projectlombok:lombok:1.18.12'
    annotationProcessor 'org.projectlombok:lombok:1.18.12'

Любая идея / предложение приветствуется.

1 Ответ

1 голос
/ 08 февраля 2020

В javac есть известная ошибка статического импорта сгенерированных методов. javac приходит к выводу, что процессор аннотаций не может «исправить» его неправильно, и просто выдает ошибку.

Исправление состоит в том, чтобы не импортировать его статически:

import com.business.lunch.dto.OfferContent;

....
    return OfferContent.builder();

РЕДАКТИРОВАТЬ: ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ: Я основной участник Project Lombok.

...