Подтвердить что ты не робот

Здание с Lombok @Slf4j и Intellij: не удается найти журнал символов

У меня есть проект maven, который строит без проблем из командной строки. Однако, когда я создаю его с IntelliJ, я получаю ошибку:

java: FileName.java:89: cannot find symbol
symbol  : variable log

В java файле нет или не определено в журнале, но есть

@Slf4j
final public class FileName {

перед телом класса, который должен определить класс журнала.

В окне структуры проекта классы для:

Maven: org.slf4j:jcl-over-slf4j:1.6.1
Maven: org.slf4j:slf4j-api:1.6.6
Maven: org.slf4j:slf4j-log4j12:1.6.6
Maven: org.slf4j:slf4j-simple:1.6.6

перечислены в библиотеках и указаны как загруженные и доступные.

Любая идея, почему это будет строить с помощью maven через командную строку, но не через IntelliJ и как решить проблему?

4b9b3361

Ответ 1

В дополнение к установленному плагину Lombok также убедитесь, что флажок "Enable annotation processing" отмечен как:

Preferences > Compiler > Annotation Processors

Примечание: начиная с IntelliJ 2017, флажок "Enable Annotation Processing" перенесен в:

Settings > Build, Execution, Deployment > Compiler > Annotation Processors

Ответ 2

Предположительно, что аннотация Lombok @Slf4j, которую вы используете. Вам нужно будет установить плагин Lombok в IntelliJ, если вы хотите, чтобы IntelliJ узнал аннотации Lombok. В противном случае, что вы ожидаете, если попытаетесь использовать поле, которое не существует?

Ответ 3

В Intellij версии 2016, 2017 включите Preferences → Compiler → Обработчики аннотации не работают для меня!

Следующий дополнительный флажок: введите описание изображения здесь

Ответ 4

Я мог бы отменить мертвую тему, но простым решением является проверка ваших зависимостей (например, Maven pom), если вы включаете logback-core и logback-classic.

Slf4j - это просто интерфейс, вам нужна конкретная реализация за его работой.

Я дважды обманывал IDEA, и теперь мне хорошо идти: D

Ответ 5

В IDEA 13 это больше не проблема, вам просто нужно установить плагин Lombok.

Ответ 6

Я только что установил последнюю версию verion 2108.1 и нашел эту проблему, после того, как установил плагин lombok и перезапустил Idea, чтобы решить его.

Ответ 7

2019:

Получить плагин, и вы отсортированы...

Файл> Настройки> Плагины

enter image description here

Ответ 8

Это сработало для меня: File → Settings → Build, Execution, Deployment → Compiler → Annotation Processor

Установите флажок "включить обработку аннотаций". Apply

близко

Ответ 9

Я видел эту проблему со старой версией Lombok при компиляции под JDK8. Установка проекта на JDK7 заставила проблему уйти.

Ответ 10

Это не будет проблемой ОП, но для тех, кто пытается все безуспешно:

У меня были похожие симптомы. Всякий раз, когда я собирался после mvn clean, он не находил log, getXYZ(), builder() или что-то еще.

[ERROR]   symbol:   variable log
[ERROR]   location: class com.example.MyClass
[ERROR] /Path/To/Some/Java/src/main/com/example/MyClass.java:[30,38] cannot find symbol
[ERROR]   symbol:   method builder()
[ERROR]   location: class com.example.MyClass

После прочтения каждого ответа, который я смог найти о проблемах QueryDSL/JPA/Hibernate/Lombok/IntelliJ/Maven, я @Getter, что виновником был единственный статический импорт метода @Getter который был аннотирован в статическом поле.

Spring 1.15.14.RELEASE, Intellij 2019.1.1

@SpringBootApplication
public class BarApplication implements ApplicationContextAware {
  @Getter
  private static ApplicationContext applicationContext;

  // ... start Spring application, and grab hold of ApplicationContext as it comes past
}
import ...
import static BarApplication.getApplicationContext;

@Slf4j
public class IMakeItAllFail {
   public IMakeItAllFail() {
      log.info("{}", getApplicationContext());
   }
}
@Slf4j
public class Foo {
  Foo() {
    log.info("I fail to compile but I have nothing to do with the other classes!");
  }
}

Ответ 11

Работал на меня !!! Это не помогало и CircleCI, и Дженкинсу.

Если вы являетесь пользователем Gradle, попробуйте добавить следующее в ваши зависимости:

dependencies {
    //Other Dependencies >>

    //LOMBOK Dependencies
    compileOnly 'org.projectlombok:lombok'
    annotationProcessor 'org.projectlombok:lombok'
    testAnnotationProcessor 'org.projectlombok:lombok'
    testCompile 'org.projectlombok:lombok'
    testImplementation 'org.projectlombok:lombok'
}

Ответ 12

После попытки всех этих ответов безрезультатно, перезагрузка в Windows 10 работает для меня. Просто проголосуйте за меня, чтобы выразить свой гнев по отношению к Microsoft. (я не шучу)

Ответ 13

После включения процессоров аннотаций и установки плагина lombok он все равно не работал. Мы обошли его, проверив опцию Idea "Делегировать сборку IDE в gradle"

Ответ 14

Для меня было важно отметить флажок "Использовать реестр плагинов" в настройках Maven.

Путь: Файл → Параметры → Сборка, Выполнение, Развертывание → Инструменты сборки → Maven

Ответ 15

Я перепробовал почти все упомянутые ответы, но у меня ничего не получалось. Мой gradle билд каждый раз терпел неудачу. Просто нашел это решение:

Добавить annotationProcessor 'org.projectlombok:lombok' в вашем build.gradle.

Это сработало для меня.

Ответ 16

Удаление аннотации @Slf4J из класса и ее повторное добавление сработало для меня.