Неможливо скласти проект, коли я використовую 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

Будь-які ідеї щодо вирішення проблем?

Update2: Можливо, читачі не хочуть це почути, але я перейшов на Scala .


Помилки з’являються навіть без плагіна. Я не в змозі запустити тести проекту, якщо Lombok знаходиться в моїх залежностях pom.xml.
Nowaker

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

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

Відповіді:


411

Я зафіксував це в 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 в каталог файлів проектів (наприклад, $HOME/dev/java/project/libs).
  3. Запустіть IDE.
  4. Клацніть Файл 🠖 Налаштування .
  5. Розгорніть збірку, виконання, розгортання pi Компілятор 🠖 Процесори анотацій .
  6. Переконайтесь, що включено обробку приміток .
  7. Переконайтесь, що Store Store генерує джерела відносно вибраних на основі параметрів модуля проекту (якщо каталог виводу модуля не працює, поверніться та спробуйте інші налаштування).
  8. Натисніть Застосувати .
  9. Клацніть Плагіни .
  10. Клацніть Marketplace .
  11. Встановити поле пошуку на: lombok
  12. Встановіть Lombok .
  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-компілятора-плагіна, так і для Idea (Налаштування -> Компілятор -> Процесори анотацій)
Ян Кубовий

3
Це не працює для мене у 2016 році.2. Веб-проект Maven. Єдине, що працювало - це встановити плагін lombok.
максимов

Idea 16.2.2 + gradle + встановлений плагін lombok. Я міг би запустити проект без цього при використанні сценарію gradle (від ідеї). Якщо я хотів запустити запуск безпосередньо (оскільки це єдиний спосіб, коли я знаю, щоб змусити роботу кодової заміни) я повинен був включити обробку анотацій. Здогадаєтесь, ідея не автоматично повністю налаштовує проект, а примітки не обробляються, незважаючи на плагін?
Нейкіус

Працював для мене в IDEA 2017.01. Встановлення Lombok працювало в Intellisense, але не для компіляції, поки не було включено процесор анотацій.
lreeder

73

Увімкнення обробки анотацій змусить її працювати

Але якщо ви перебуваєте на Mac , переконайтеся, що ви включили обробку приміток (поставте галочку) з обох доступних місць .

1.) Ідея Intellij -> Налаштування -> Компілятор -> Процесори анотацій

2.) Файл -> Інші настройки -> Установки за замовчуванням -> Компілятор -> Процесори анотацій


2
Досі довелося це робити навіть з останньою Intellij 15.0.2
BeepDog

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

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

Ще треба робити в IntelliJ 2016.3 :)
Сукеш Котян

навіть активуючи в обох місцях, 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 лайків ?!
doctorram

Єдине рішення, яке працювало для мене: D дякую !!
Біанка

9

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

  1. Файл -> Налаштування -> Збірка, виконання, розгортання -> Процесори анотацій -> Увімкнути обробку анотацій;

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

Не забудьте застосувати зміни.

  1. Встановіть плагін lombok у тому ж діалоговому вікні налаштування;

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

  1. Наразі це здається досить гарним, для цього потрібно перезапустити IntelliJ, а потім відновити проект.

Найкращі побажання :)


У вас були maven або gradle? У мене виникають проблеми змусити роботу ломбока для багатомодульного проекту. Я продовжую отримувати помилку: 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 замість цього. Що стосується вашого питання, я сподіваюся, що ви можете почати нове конкретне запитання, щоб описати деталі, і там багато експертів допоможуть вам;)
Херен

Неважливо, я отримав це, щоб скласти зараз, дякую. У мене був певний конфлікт у модулях з обмеженими можливостями, імпорт ядра був імпортований в модуль утиліти, а модуль утилітів імпортувався в основний модуль, який створив конфлікт.
0x01Брейн

8

Якщо ви перевірили обидва ці кроки наступним чином

  1. Увімкнути примітки: це перевірка, виконана в налаштуваннях IntelliJ.
  2. Імпорт lombok в IntelliJ classPath (Налаштування -> Плагіни)

і все-таки виникають помилки, то, будь ласка, перевірте компілятор - якщо це JAVAC або ECLIPSE .

Ви можете перевірити компілятор у розділі Налаштування -> Збірка, Виконання, Розгортання -> Компілятор -> Компілятор Java.

Змініть компілятор Use на 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 як залежність від вашого проекту? lombok.jar повинен бути на класній стежці під час компіляції проекту, який використовує будь-яку з lombok-анотацій.


Виявилося, він не вдається всередині процесора анотацій. Я оновив своє запитання журналом виводу.
експерт

3

Я був на Mac

Це моя версія IntelliJ IDEA та Mac - IntelliJ IDEA 2017.1.5 збірка # IU-171.4694.70 --- Mac OS X 10.12

Крім того, щоб увімкнути обробку анотацій (позначте прапорець у цих двох місцях).

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

.

2.) Файл -> Інші настройки -> Установки за замовчуванням -> Компілятор -> Процесори анотацій

Мені довелося також встановити плагін Lombok, щоб він працював.

3.) Intellij IDEA -> Налаштування -> Плагіни -> Огляд сховищ-> Пошук "Lombok" -> встановлення плагіна -> Застосувати та перезапустити IDEA


2

Для тих із вас, хто все ще має проблеми:

Окрім вищезазначених кроків увімкнення процесорів анотацій та встановлення плагіна IntelliJ Lombok, мені також довелося будувати -> Rebuild Project.


2
Мені також довелося скасувати кеш і перезапустити, перш ніж Intellij перестав скаржитися.
Ганс

2

1 、 встановіть плагін lombok для IDEA

Ідея Intellij -> Налаштування -> Плагіни -> введіть lombok -> Шукати в сховищах -> Встановити -> Перезапустити IDEA

2 、 плагін lombok

Увімкнення обробки анотацій змусить її працювати

Але якщо ви перебуваєте на Mac, переконайтеся, що ви включили обробку приміток у двох наступних місцях:

Ідея Intellij -> Налаштування -> Збірка, виконання, розгортання -> Компілятор -> Процесори анотацій, встановіть прапорець "Увімкнути обробку анотацій". Файл -> Інші налаштування -> Налаштування за замовчуванням -> Збірка, виконання, розгортання -> Компілятор -> Процесори анотацій, встановіть прапорець "Увімкнути обробку анотацій".


Я не бачу налаштувань за замовчуванням в Інших налаштуваннях в IntelliJ. Чи все ще вони присутні. Я використовую Ultimate Edition
версія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 не може отримати процесори від проекту classpath.

Отже, на вкладці Налаштування процесорів анотації потрібно вручну вказати шлях процесора .


0

У мене була схожа проблема, коли будували з JDK8, повертали проект на JDK7, і він працював чудово. Можливо старіша версія Lombok, яка не компілюється під JDK8.


У мене теж було таке ж питання. Спробуйте змінити версію Lombok, щоб IntelliJ знову завантажив залежність.
Sanghyun Lee

0

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

Коли Alt+EnterING на @Slf4jанотацію я помилково вибрав невірний імпорт. Отже, якщо код не компілюється, переконайтесь, що ви імпортуєте:

import lombok.extern.slf4j.Slf4j;


0

FWIW - Встановлюючи анотації компілятора, як описано вище, переконайтеся, що ви також перевіряєте наявність будь-яких профілів, таких як "Maven процесори анотацій за замовчуванням".


0

Може трапитися так, що навіть якщо ви його правильно налаштували і це видно серед бібліотек та у списку залежностей від Gradle, IntelliJ все ще не має його у шляху до класу. Або він є, але налаштований з різною сферою застосування (наприклад: тест замість компіляції.)

Спочатку переконайтеся, що у вас встановлено плагін та оброблення приміток, як зазначено в інших відповідях.

Якщо анотацію досі не розпізнано, поставте курсор на неї, натисніть клавішу 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. Проект відновлення.

Дивіться скріншоти щодо оновлення та відновлення проекту нижче.

Як оновити lombok

Як відновити проект


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 ) та додайте банку до структури проекту.

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


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 чистою роботою встановлення. Перш ніж додати цей код, я не міг знайти символ для геттерів та сеттерів.

                    <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.