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

Я пытаюсь использовать 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.

Ответ 1

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

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

Для IDEA 2016.2:

Preferences... > Build, Execution, Deployment > Compiler > Annotation Processors

После включения запустите 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. Установите Lombok.
  13. Нажмите ОК.
  14. Перезапустите IDE, если будет предложено.
  15. Нажмите Файл 🠖 Настройки проекта.
  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).

Ответ 2

Включение обработки аннотаций сделает работу

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

1.) Intellij Idea → Настройки → Компилятор → Обработчики аннотаций

2.) Файл → Другие настройки → Настройки по умолчанию → Компилятор → Обработчики аннотаций

Ответ 3

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

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

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

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

Ответ 4

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

Ответ 5

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

  • Включить аннотации: это проверка, сделанная в IntelliJ предпочтения.
  • Импорт lombok в IntelliJ classPath (Настройки → Плагины)

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

Вы можете проверить компилятор в настройках → сборка, выполнение, развертывание → компилятор → компилятор Java.

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

Ответ 7

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

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

enter image description here

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

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

enter image description here

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

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

Ответ 8

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

Ответ 9

Я был на 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 → Настройки → Плагины → Обзор Repositories-> Поиск "Lombok" → Установить плагин → Применить и перезапустить IDEA

Ответ 10

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

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

Ответ 11

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

Intellij Idea → Настройки → Плагины → тип в ломбоке → Поиск в репозиториях → install → restart IDEA

2, плагин config lombok

Включение обработки аннотаций сделает работу

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

Intellij Idea → Preferences → Build, Execution, Deployment → Compiler → Annotation Processors, установите флажок "Включить обработку аннотаций". Файл → Другие настройки → Настройки по умолчанию → сборка, выполнение, развертывание → компилятор → обработчики аннотации, установите флажок "Включить обработку аннотаций".

Ответ 12

Убедитесь, что он добавлен правильно

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

}

Ответ 13

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

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

Ответ 14

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

Ответ 15

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

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

import lombok.extern.slf4j.Slf4j;

Ответ 16

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

Ответ 17

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

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

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

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

Ответ 18

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

Ответ 19

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

  • У меня установлен плагин lombok.
  • Обработчики аннотации также проверяются.
  • Мой Java-компилятор был настроен на JAVAC

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

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

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

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

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

Ответ 20

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

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

Ответ 21

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

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

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

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

Ответ 22

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

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

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

Ответ 23

Если Атрибут foo является логическим, он предоставляет isFoo() а не getFoo() от Lombok @Data.

Ответ 24

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

Ответ 25

Чтобы получить эту работу, просто установите "Lombok Plugin" для IntelliJ. Вам не нужно ничего делать, если включить "Обработчики аннотаций", как предложили некоторые другие комментаторы. (Я тестировал это с последней версией IntelliJ IDEA, в настоящее время 2017.1.2). Чтобы установить плагин, перейдите в "Настройки", затем "Плагины", затем нажмите кнопку "Обзор репозиториев", затем найдите "Ломбок" и установите плагин Lombok. Вам будет предложено перезапустить IntelliJ. После этого вы сможете скомпилировать IntelliJ, и вы больше не будете проверять ошибки.