Не могу скомпилировать проект, когда я использую Lombok под IntelliJ IDEA


202

Я пытаюсь использовать Lombok в своем проекте, который я разрабатываю с использованием IntelliJ IDEA 11.

Я установил сторонний плагин для IDEA, и он, кажется, работает нормально, потому что IDEA видит все автоматически сгенерированные методы / поля.

Итак, у меня есть класс, который использует Slf4j. Я это так комментировал

import lombok.extern.slf4j.Slf4j;

@Slf4j
public class TestClass
{
    public TestClass()
    {
        log.info("Hello!");
    }
}

Но когда я строю свой проект, компилятор плюет cannot find symbol variable log.

Не могли бы вы сказать мне, что мне здесь не хватает?

Обновление: оказалось, что процесс аннотации RequestFactory завершается неудачно.

input files: {com.zasutki.courierApp.server.TestServlet, com.mine.courierApp.server.model.DatastoreObject}

annotations: [javax.inject.Singleton, javax.inject.Inject, lombok.Getter, lombok.Setter, com.googlecode.objectify.annotation.Id, com.googlecode.objectify.annotation.OnSave]

Processor com.google.web.bindery.requestfactory.apt.RfValidator matches [lombok.Getter, com.googlecode.objectify.annotation.Id, javax.inject.Inject, lombok.Setter, com.googlecode.objectify.annotation.OnSave, javax.inject.Singleton] and returns false.

cannot find symbol variable log

Есть идеи по поводу обходных путей?

Обновление 2: Возможно, это не то, что читатели хотят услышать, но в итоге я перешел на Scala .


Ошибки появляются даже без плагина. Я не могу запустить тесты проекта, если Lombok находится в моих зависимостях pom.xml.
Новакер

1
Читатели на самом деле предпочли бы услышать, что вы переключились на Eclipse.
Симеон Лейзерзон

1
Читатели приходят сюда для решения поставленной задачи, заставляют IntelliJ работать с ломбоком.
Флориан Ф

Ответы:


412

Я исправил это в IDEA 12, установив флажок Enable annotation processingв:

Настройки -> Компилятор -> Процессоры аннотаций

Для IDEA 2016.2:

Настройки ...> Построение, выполнение, развертывание> Компилятор> Процессоры аннотаций

После включения запустите Build -> Rebuild Project, чтобы аннотации были распознаны и устранены ошибки.


Для IDEA 2019.2.1, в зависимости от того, как настроен проект, установка плагина Project Lombok может быть недостаточной. Вот еще один способ использования Project Lombok с IntelliJ IDEA:

  1. Посетите https://projectlombok.org/download
  2. Загрузите файл JAR в каталог lib проекта (например, $HOME/dev/java/project/libs).
  3. Запустите IDE.
  4. Нажмите Файл 🠖 Настройки .
  5. Разверните Построение, Выполнение, Развертывание 🠖 Компилятор 🠖 Процессоры аннотаций .
  6. Убедитесь, что флажок Включить обработку аннотаций отмечен.
  7. Убедитесь, что Store генерирует источники относительно выбранного на основе настроек модуля проекта (если выходной каталог модуля не работает, вернитесь и попробуйте другой параметр).
  8. Нажмите Применить .
  9. Нажмите Плагины .
  10. Нажмите Marketplace .
  11. Установите поле поиска на: lombok
  12. Установите Ломбок .
  13. Нажмите ОК .
  14. Перезапустите IDE, если будет предложено.
  15. Нажмите Файл Settings Настройки проекта .
  16. Выберите библиотеки .
  17. Нажмите символ +, чтобы добавить новую библиотеку проекта (или нажмите Alt+ Insert).
  18. Выберите Java .
  19. Установите путь к: $HOME/dev/java/project/libs/lombok.jar
  20. Нажмите ОК .
  21. Выберите модули для применения.
  22. Нажмите ОК .
  23. При желании переименуйте lombokв Project Lombok 1.18.8.
  24. Нажмите ОК .

Теперь проект можно импортировать из lombokпакета и использовать аннотации Project Lombok (например, lombok.Setterи lombok.Getter).


Мне пришлось остановить Win10 из-за проблемы с зависанием (сбой пилота), и IntelliJ был открыт. При перезапуске я предполагаю, что файлы идей в каталоге моего проекта были изменены (workspace.xml), и после этого я не смог сгенерировать свои методы getters / setters через lombok. «Не могу найти символ» во время сборки. Я немного боролся, чтобы определить причину проблемы.
Алекс

2
Не забудьте установить процессор аннотаций: lombok.launch.AnnotationProcessorHider $ AnnotationProcessor как для maven-compiler-plugin, так и для Idea (Настройки -> Компилятор -> Процессоры аннотаций)
Ян Кубовый

3
Это не работает для меня в 2016 году. Maven веб-проект. Единственное, что сработало, это установка плагина lombok.
Максимов

Идея 16.2.2 + gradle + установленный плагин lombok. Я мог бы запустить проект без этого при использовании скрипта rundle (из идеи). Если я хотел запустить напрямую (так как я знаю, что это единственный способ заставить работать горячую замену кода), мне нужно было включить обработку аннотаций. Угадайте, идея не полностью настраивает проект и аннотации не обрабатываются, несмотря на плагин?
Нейкиус,

Работал для меня в IDEA 2017.01. Установка Lombok работала для Intellisense, но не для компиляции, пока не был включен Annotation Processor.
владелец

73

Включение обработки аннотаций заставит это работать

Но если вы работаете на Mac , убедитесь, что вы включили обработку аннотаций (поставьте галочку) в обоих доступных местах .

1.) Intellij Idea -> Настройки -> Компилятор -> Процессоры аннотаций

2.) Файл -> Другие настройки -> Настройки по умолчанию -> Компилятор -> Процессоры аннотаций


2
Тем не менее пришлось сделать это даже с последним intellij 15.0.2
BeepDog

1
Все еще присутствует в 15.0.4. Мне также пришлось обновить версию Lambok до последней и изменить компилятор Java на JAVAC. Затем сделайте перестройку проекта
Srikanta

Все еще нужно делать в IntelliJ 2016.1.3 :) Вы должны установить 2 процессора аннотаций. Такая боль, когда ты забываешь об этом!
Рэй Хантер

Все еще должен сделать в IntelliJ 2016.3 :)
Sukesh Kotian

даже если активировать в обоих местах, IntelliJ 2016.3.2 все равно не может скомпилироваться с Lombok 1.16.12 :(
arcuri82

56

Картинное представление решения этой проблемы.

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

После этого вы можете установить плагин lombok из intellij (после установки Intellij перезапустится, чтобы включить плагин, поэтому убедитесь, что вы сохранили свою работу. (Intellij сохраняет все изменения перед перезапуском, просто чтобы быть в безопасности). ) скриншот ниже:

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


3
спасибо .. у меня такая же проблема. Я забыл установить плагин, прежде чем установить конфигурацию аннотации :)
TYL

19
  1. Убедитесь, что он правильно добавлен в ваш проект.

пример для Gradle:

 dependencies {
     compileOnly 'org.projectlombok:lombok:1.18.8'
     annotationProcessor 'org.projectlombok:lombok:1.18.8'
     ...
 }
  1. Установите плагин Lombok для вашей IDE
  2. Установите флажок «Включить обработку аннотаций» в IDE (IntellijIdea), не подозревая, есть ли что-то подобное для других IDE, таких как Eclipse.

1
это, это, и тысячу раз это. Спасибо, я застрял в течение одного часа
ch1ll

1
да, вы правы, мы должны сначала проверить конфигурацию сборки, затем настройку IDE. спасибо куча!
Эрик Тан

Это единственное, что действительно сработало! Почему у него всего 13 лайков ?!
докторрам

Единственное решение, которое сработало для меня: D спасибо !!
Бьянка

9

Просто для справки, используя IntelliJ 2018.3 , я решил эту проблему (используя @Dataаннотацию для вставки getter/setter), выполнив три шага:

  1. Файл -> Настройки -> Построение, выполнение, развертывание -> Процессоры аннотаций -> Включить обработку аннотаций;

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

Не забудьте применить изменения.

  1. Установите плагин ломбок в том же диалоге настроек;

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

  1. Пока это кажется достаточно хорошим, требуется перезапустить IntelliJ, а затем перестроить ваш проект.

С наилучшими пожеланиями :)


У тебя был мавен или градл? У меня проблема с тем, чтобы lombok работал для многомодульного проекта. Я получаю сообщение об ошибке: Error:java: Annotation processing is not supported for module cycles. Please ensure that all modules from cycle [module-core,module-utils] are excluded from annotation processing
0x01Brain

@ 0x01Brain я был использованием Maven в то время, но теперь с помощью Gradle вместо этого. Что касается вашего вопроса, я надеюсь, что вы можете начать новый конкретный вопрос, чтобы описать детали, и есть много экспертов, которые помогут вам;)
Слушай

не берите в голову, я получил это, чтобы собрать сейчас, спасибо. У меня был конфликт между зависимостями: модуль-ядро было импортировано в модуль утилит, а модуль утилит был импортирован в модуль ядра, что вызвало конфликт.
0x01Brain

8

Если вы проверили оба эти действия следующим образом

  1. Включить аннотации: эта проверка выполняется в настройках IntelliJ.
  2. Импорт lombok в IntelliJ classPath (Настройки -> Плагины)

и до сих пор получаю ошибки , то , пожалуйста , проверьте компилятор - если это JAVAC или ECLIPSE .

Вы можете проверить компилятор в Предпочтения -> Сборка, Выполнение, Развертывание -> Компилятор -> Компилятор Java.

Измените Использовать компилятор на Javac (если это Eclipse). Это то, что сработало для меня.


8

в последней версии Gradle вы должны использовать annotationProcessor:

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

7

Как отмечалось здесь , цитата: «Вы должны активировать опцию внешнего компилятора и включить процессоры аннотаций или отключить внешний компилятор и отключить все компиляторы аннотаций для работы с lombok». Это исправило мою проблему. Обратите внимание, что я добавил плагин Scala до получения этой ошибки, поэтому я подозреваю, что плагин изменил некоторые из вышеуказанных настроек.


7

есть плагин для intellij. смотрите здесь: https://projectlombok.org/download.html


2
Этот плагин может быть установлен в меню настроек / плагинов Intellij. Убедитесь, что у вас установлен последний плагин. Обновление до последней версии плагина сработало для меня.
JasonM1

5

Есть ли у вас ломбок как зависимость вашего проекта? lombok.jar должен быть на пути к классам во время компиляции проекта, который использует любую из аннотаций lombok.


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

3

Я был на Mac

Это моя версия IntelliJ IDEA и Mac - IntelliJ IDEA 2017.1.5 Build # IU-171.4694.70 --- Mac OS X 10.12

В дополнение к включению обработки аннотаций (установите флажок) в этих 2 местах.

1.) Intellij IDEA -> Настройки -> Компилятор -> Процессоры аннотаций

,

2.) Файл -> Другие настройки -> Настройки по умолчанию -> Компилятор -> Процессоры аннотаций

Мне также пришлось установить плагин Lombok, чтобы он работал.

3.) Intellij IDEA -> Настройки -> Плагины -> Просмотр репозиториев-> Поиск "Lombok" -> Установить плагин -> Применить и перезапустить IDEA


2

Для тех из вас, у кого все еще проблемы:

В дополнение к описанным выше шагам включения процессоров аннотаций и установки плагина IntelliJ Lombok мне также пришлось выполнить Build -> Rebuild Project.


2
Я также должен был сделать недействительным кеш и перезапустить, прежде чем Intellij перестал жаловаться.
Ганс

2

1, установить плагин lombok для IDEA

Intellij Idea -> Настройки -> Плагины -> введите lombok -> Поиск в репозиториях -> установить -> перезапустить IDEA

2 、 конфиг lombok плагин

Включение обработки аннотаций заставит это работать

Но если вы работаете на Mac, убедитесь, что вы включили обработку аннотаций в следующих двух местах:

Intellij Idea -> Настройки -> Построение, выполнение, развертывание -> Компилятор -> Процессоры аннотаций, установите флажок «Включить обработку аннотаций». Файл -> Другие настройки -> Настройки по умолчанию -> Построение, выполнение, развертывание -> Компилятор -> Процессоры аннотаций, установите флажок «Включить обработку аннотаций».


Я не вижу настройки по умолчанию в других настройках в IntelliJ. Они все еще присутствуют. Я использую Ultimate редакцию
версия 11.03

1

Это не помогло мне ни с одним из перечисленных выше решений. Я добавил <scope>provided</scope>к зависимости в pom.xml, и это сработало.

<dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <version>1.16.20</version>
        <scope>provided</scope>
    </dependency>

Какую версию IntelliJ вы используете? Кроме того, какая версия JDK?
realPK

1

Я столкнулся с этой проблемой после обновления IDEA до 2018.3. Мне пришлось обновить все существующие плагины


1

Перепробовав все предложения здесь, я также нашел другой вид решения. Кажется, что иногда IDEA не может получить процессоры из пути к классам проекта.

Итак, на вкладке «Настройки процессоров аннотации » необходимо вручную указать путь к процессору .


0

У меня была похожая проблема при сборке с JDK8, вернул проект в JDK7, и он работал нормально. Может быть более старая версия Lombok, которая не будет компилироваться под JDK8.


У меня тоже была такая же проблема. Попробуйте изменить версию Lombok, чтобы IntelliJ снова загрузил зависимость.
Санхьюн Ли

0

У меня была та же проблема, поэтому я оставлю это здесь для дальнейшего использования в забвении.

Когда Alt+EnterING на @Slf4jаннотацию я ошибочно выбрал неверный импорт. Поэтому, если код не компилируется, убедитесь, что вы импортировали:

import lombok.extern.slf4j.Slf4j;


0

FWIW - при настройке аннотаций компилятора, как описано выше, убедитесь, что вы также проверяете любые профили, которые вы используете, такие как «Обработчики аннотаций по умолчанию Maven».


0

Может случиться так, что даже если вы настроили его правильно и он виден среди библиотек и в списке зависимостей Gradle, IntelliJ все еще не имеет его в пути к классам. Или он есть, но настроен с другой областью действия (например, test вместо compile.)

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

Если у вас по-прежнему есть аннотация, не распознанная, поместите курсор на нее, нажмите ALT + ENTER (или OPTION + ENTER) и посмотрите, есть ли у вас пункт меню Add library: Gragle: org.projectlombok:lombok:VERSION to class path . Если вы видите это, выберите этот, и это может решить вашу проблему.

Вы можете проверить библиотеку и ее область в: Настройки проекта / Модули / Вкладка Зависимости (найдите lombok там)


0

Если вы попробовали все представленные здесь решения и все еще не можете скомпилировать исходники, также посмотрите здесь: Статический импорт класса компоновщика прерывает генерацию байт-кода в Maven - посмотрите на ваши источники, если есть такой статический импорт. Это влияет на плагин maven, поэтому компиляция не удастся на других системах сборки вне IntelliJ IDEA.


0

В моем случае все вещи, упомянутые ниже, были у меня на месте, и они все еще не работали.

  1. У меня был корректно установлен плагин lombok
  2. Аннотация Процессоры, также проверено.
  3. Мой компилятор Java был установлен на JAVAC

Чтобы исправить мои проблемы, мне пришлось

  1. Обновите lombok до последней версии (v0.15) по состоянию на 7 октября 2017 года.
  2. Перезапустите IntelliJ.
  3. Перестроить проект.

Смотрите скриншоты о том, как обновить и перестроить проект ниже.

Как обновить ломбок

Как перестроить проект


0

Вы можете исправить это cannot find symbol variable logпри использовании lombok в IntelliJ IDEA 2017.1.3, выполнив следующее:

Настройки IntelliJ> Построение, выполнение, развертывание> Процессоры аннотаций> [Проверить] Включить обработку аннотаций> Применить


0

Установите приведенный ниже плагин и перезапустите IDE для устранения ошибок:

File -> Settings -> Plugins-> Browse Repositories -> Lombok Plugin

Включить процессор аннотаций:

File -> Settings -> Build, Execution, Deployment -> Compiler -> Annotation Processors
File -> Other Settings -> Default Settings -> Compiler -> Annotation Processors

0

Я столкнулся с подобной проблемой. Следующее сработало для меня.

скачайте (отсюда https://projectlombok.org/download ) и добавьте jar в структуру вашего проекта.

Шаги: Файл -> Структура проекта -> Глобальные библиотеки


0

Если библиотеки lombok установлены правильно, как упоминалось выше, нажмите аннотацию, которая не будет компилироваться, Alt-Enter, появится правильный импорт, и код скомпилируется. - Мне понадобилось время, чтобы понять это. Я положил это здесь на всякий случай, если люди могут упустить простое очевидное.


0

Для пользователей Eclipse в MacOS сделайте это. Это сработало для меня.

  1. Скопируйте lombok.jar в Eclipse.app/Contents/MacOSкаталог.
  2. Добавьте -javaagent:lombok.jarв конец файла Eclipse.app/Contents/Eclipse/eclipse.ini.
  3. Перезапустите Eclipse и включите «Обработка аннотаций» в свойствах проекта.

Ссылка на это


0

Помимо упомянутых во всех ответах, я должен добавить приведенный ниже код в конфигурации pom.xml, чтобы заставить mvn clean install работать. Перед добавлением этого кода я получал не найденный символ для методов получения и установки.

                    <annotationProcessorPath>
                        <groupId>org.projectlombok</groupId>
                        <artifactId>lombok</artifactId>
                        <version>1.18.8</version>
                    </annotationProcessorPath>

0

Для меня, что сработало:

  1. Я только что удалил установленный плагин Lombok
  2. Я поставил галочку "Включить плагин аннотации"
  3. Я выбрал «Получить процессор из пути к классам проекта» на той же странице

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.