IntelliJ IDEA не может видеть сгенерированный код Lombok

У меня есть проект на основе Gradle, который использует ломбок. Я импортировал этот проект в IntelliJ IDEA 14.1 (используя метод импорта Import External Model). Я могу без проблем запускать модульные тесты JUnit4 в Gradle, но у IntelliJ, похоже, есть проблема с просмотром сгенерированных Lombok геттеров. Это мешает мне запускать тесты в IDEA.

Чтобы убедиться, что это не проблема с настройкой, я создал очень простой проект. и подтвердил, что та же проблема возникает в простом тестовом проекте.

Мои версии: Gradle: gradle-2.3-all через оболочку Gradle
Intellij IDEA: IU-141.713
Плагин Lombok: 0.9.2

Что мне здесь не хватает?

Обновить Под не может видеть я не имею в виду физически невидимый. Я имею в виду это:

/home/meeee/workspace/junit-lombok-idea/lib/src/main/java/com/example/jumbokea/Main.java
Error:(10, 11) java: cannot find symbol
  symbol:   method setIntField(int)
  location: variable sc of type com.example.jumbokea.SomeClass
Error:(12, 41) java: cannot find symbol
  symbol:   method getIntField()
  location: variable sc of type com.example.jumbokea.SomeClass
Error:(14, 33) java: constructor AnotherClass in class com.example.jumbokea.AnotherClass cannot be applied to given types;
  required: no arguments
  found: float,com.example.jumbokea.SomeClass
  reason: actual and formal argument lists differ in length
Error:(16, 46) java: cannot find symbol
  symbol:   method getSomeFloat()
  location: variable ac of type com.example.jumbokea.AnotherClass
Error:(17, 43) java: cannot find symbol
  symbol:   method getSomeClass()
  location: variable ac of type com.example.jumbokea.AnotherClass

Декомпилированные классы показывают геттеры и сеттеры, но я получаю эти ошибки, когда я получаю IntelliJ для запуска «приложения» или модульных тестов.

Геттеры и сеттеры есть, но их нет???


person copolii    schedule 01.05.2015    source источник
comment
Отвечает ли это на ваш вопрос? Не удается скомпилировать проект, когда я использую Lombok под ИДЕЯ IntelliJ   -  person Valeriy K.    schedule 30.01.2020
comment
нашел это полезным: baeldung.com/lombok-ide   -  person Snedden27    schedule 19.02.2020


Ответы (10)


Вам нужно включить препроцессор аннотаций. см. документацию здесь.

Кроме того, вы должны установить плагин lombok, если это еще не сделано.

person mh-dev    schedule 01.05.2015
comment
У меня была включена обработка аннотаций, но она каким-то образом отключилась. Все работало нормально до 16:00 по моему вчерашнему времени, а затем внезапно начались эти ошибки. Обработка аннотаций почему-то была отключена. - person copolii; 01.05.2015
comment
Не забудьте перезапустить IntelliJ после включения препроцессора аннотаций. Это была моя проблема - person Tim Hovius; 01.09.2017
comment
начиная с Intellij Idea 2020.3, плагин Lombok больше не нужен projectlombok.org/setup/intellij - person velocity; 02.02.2021

Мне удалось решить эту проблему, выполнив следующие действия:

  • Установите плагин IDEA Lombok
  • Включить обработку аннотаций см. документацию
  • Установите последнюю версию Maven в своей системе и настройте IntelliJ для ее использования (в отличие от встроенной) см. документацию
person Samantha Catania    schedule 27.01.2016
comment
Уже есть правильный и принятый ответ. Мейвен здесь не причем. У меня его никогда не было и он мне никогда не был нужен. - person copolii; 29.01.2016
comment
Все остальные решения у меня не сработали, поэтому я решил поделиться тем, что сработало. - person Samantha Catania; 29.01.2016
comment
@copolii Одна и та же проблема может возникнуть по разным причинам. Например, для меня принятый ответ был абсолютно бесполезен. А этот - спас меня. - person Gangnus; 26.02.2020

Его можно увидеть в папке сборки.

введите здесь описание изображения

person JiHong Jang    schedule 01.05.2015

В моем случае проблема возникла после обновления IntelliJ через Toolbox.

Флаг «Включить обработку аннотаций» был отключен (несмотря на импорт настроек из предыдущей версии IntelliJ), поэтому я включил его. Это не решило проблему после перезагрузки, очистки, сборки.

Однако переустановка плагина lombok помогла!

РЕДАКТИРОВАТЬ: похоже, это была проблема совместимости плагина lombok с IntelliJ 2018.1, для пользователей IntelliJ требуется обновление плагина до 0.17.

Выдержка из журнала изменений плагина Lombok:

Плагин поддержки Lombok обновлен до версии 0.17: — Исправлено (#465): исправлена ​​совместимость плагина с IntelliJ 2018.1.

person logrusso    schedule 06.04.2018

Как упоминалось в другом ответе, установите плагин Lombok и включите обработчик аннотаций. Нажмите дважды SHIFT в IntelliJ и введите Enable annotation processing в поле поиска. После этого поставьте галочку и перезапустите IDE.

введите здесь описание изображения

введите здесь описание изображения

person Arefe    schedule 01.03.2019

После включения процессора аннотаций и установки плагина ломбока, если по-прежнему возникает ошибка «не удается найти символ» в методе, сгенерированном ломбоком, попробуйте проверить конфигурацию градиента, которая находится в

Предпочтение -> Сборка, выполнение, развертывание -> Gradle,

если вы используете локальный дистрибутив Gradle, измените его на использовать оболочку Gradle по умолчанию.

Я получил эту ошибку, когда оболочка gradle моего проекта - 4.10.2, но моя локальная версия gradle - 5.1.1, и я решаю ее после того, как изменю ее, чтобы использовать оболочку gradle по умолчанию.

person Lindsey Zhang    schedule 27.01.2019

Добавьте ниже зависимость в pom.xml вместе с другими решениями, упомянутыми в других ответах.

<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>1.18.2</version>
    <scope>provided</scope>
</dependency>
person TrueIndian 31    schedule 20.03.2019

Даже после добавления обработчика аннотаций и добавления зависимости от ломбока проблема может не решиться. Это связано с тем, что файлы классов, связанные с моделью, должны находиться в целевой папке.

Запустите чистую установку, чтобы сгенерировать файлы классов для модели с изменениями, сгенерированными ломбок-кодом.

person Rishikesh Fanse    schedule 15.12.2019

В случае Lombok IntelliJ позволяет вам искать использование переменных, которые также будут включать геттеры и сеттеры. Просто щелкните имя переменной и option/alt + f7.

Это работает в Intellij 2016 и плагине Lombok 0.13.16. Насчет старых версий не уверен.

person wst    schedule 03.11.2016

Попробуйте нажать на импорт ломбока и поставить alt + enter, затем появится короткий список, выберите добавить зависимость от maven, затем в правом нижнем углу на экране появится значок, который должен быть включен maven, нажмите «Включить автоматически». Для меня это сработало.

person Jan Andrzejewski    schedule 23.07.2019