Program Tip

Lombok의 @ Slf4j 및 Intellij로 빌드 : 기호 로그를 찾을 수 없습니다.

programtip 2020. 10. 13. 19:04
반응형

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

라이브러리 아래에 나열되며 다운로드 및 사용 가능으로 표시됩니다.

이것이 IntelliJ가 아닌 명령 줄을 통해 maven으로 빌드되는 이유와 문제를 해결하는 방법을 아십니까?


Lombok 플러그인을 설치하는 것 외에도 다음 에서 " Enable annotation processing"확인란이 선택되어 있는지 확인하십시오 .

Preferences > Compiler > Annotation Processors

참고 : IntelliJ 2017부터 " Enable Annotation Processing"확인란이 다음으로 이동되었습니다.

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

아마도 그것은 당신이 사용 하고있는 Lombok @ Slf4j 주석 일 것입니다. IntelliJ가 Lombok 주석을 인식하도록하려면 IntelliJ에 Lombok 플러그인을 설치해야합니다. 그렇지 않으면 존재하지 않는 필드를 사용하려고하면 무엇을 기대합니까?


Intellij 버전 2016, 2017에서 Preferences-> Compiler-> Annotation Processors가 작동하지 않습니다!

다음 추가 확인란이 도움이됩니다. 여기에 이미지 설명 입력


죽은 주제를 풀고있을 수 있지만 간단한 해결책은 logback-corelogback-classic을 포함하는 경우 종속성 (예 : Maven의 pom)을 확인하는 것 입니다.

Slf4j 는 인터페이스 일 뿐이며 작동하려면 구체적인 구현이 필요합니다.

나는 IDEA가 엉망으로 두 번 속아 봤습니다 . 이제 갈 수 있습니다 : D


IDEA 13에서는 더 이상 문제가되지 않는 것 같습니다. Lombok 플러그인을 설치하기 만하면됩니다.


방금 최신 아이디어 버전 2108.1을 설치했고 lombok 플러그인을 설치 한 후이 문제를 발견하고 Idea를 다시 시작하여 해결했습니다.


2019 :

플러그인을 받으면 정렬됩니다 ...

파일> 설정> 플러그인

여기에 이미지 설명 입력


이것은 나를 위해 일했습니다. File -> Settings -> Build, Execution, Deployment -> Compiler -> Annotation Processor

'주석 처리 활성화'를 선택하십시오. Apply

닫기


JDK8에서 컴파일 할 때 이전 버전의 Lombok에서이 문제가 발생했습니다. 프로젝트를 JDK7로 다시 설정하면 문제가 해결되었습니다.


이것은 OP의 문제가 아니지만 성공하지 못한 모든 것을 시도하는 다른 사람에게는 다음 과 같습니다.

I had similar symptoms. Whenever I built after a mvn clean, it wouldn't find log, or getXYZ(), or builder(), or anything.

[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

After reading every answer I could find about QueryDSL/JPA/Hibernate/Lombok/IntelliJ/Maven issues to no avail, I worked out that the culprit was a single static import of a @Getter method that was annotated on a static field.

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!");
  }
}

Worked for me!!! It was failing on CircleCI & on Jenkins as well.

If you're a Gradle User try add the following into your dependencies:

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'
}

After enabling annotation processors and installing the lombok plugin, it still didn't work. We worked around it by checking the Idea option "Delegate IDE build to gradle"


나를 위해 정리 한 것은 Maven 설정에서 "Use plugin registry"확인란을 선택하는 것이 었습니다.

경로는 File-> Preferences-> Build, Execution, Deployment-> Build Tools-> Maven입니다.


나는 언급 된 거의 모든 답변을 시도했지만 아무것도 효과가 없었습니다. 내 gradle 빌드가 매번 실패했습니다. 이 솔루션을 찾았습니다.

annotationProcessor 'org.projectlombok:lombok'build.gradle을 추가 하십시오.

이것은 나를 위해 일했습니다.


클래스에서 @ Slf4J 주석을 제거한 다음 다시 추가하면 저에게 효과적이었습니다.

참고 URL : https://stackoverflow.com/questions/14866765/building-with-lomboks-slf4j-and-intellij-cannot-find-symbol-log

반응형