IntelliJ IDEA에서 Lombok을 사용하는 경우 프로젝트를 컴파일 할 수 없습니다


202

IntelliJ IDEA 11을 사용하여 개발중인 프로젝트에서 Lombok 을 사용하려고합니다 .

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
독자들은 실제로 이클립스로 전환했다는 말을 선호 할 것이다.
Simeon Leyzerzon

1
독자들은 당면한 문제에 대한 해결책을 찾기 위해 여기에 와서 IntelliJ를 롬복과 함께 작동하게합니다.
Florian F

답변:


411

IDEA 12 Enable annotation processing에서 확인란을 설정하여 수정했습니다 .

설정-> 컴파일러-> 주석 프로세서

IDEA 2016.2의 경우 :

환경 설정 ...> 빌드, 실행, 배치> 컴파일러> 주석 프로세서

활성화 한 후 빌드-> 프로젝트 다시 빌드를 실행 하여 주석을 인식하고 오류를 제거하십시오.


IDEA 2019.2.1의 경우 프로젝트 구성 방법에 따라 Project Lombok 플러그인 설치로는 충분하지 않을 수 있습니다. IntelliJ IDEA와 함께 Project Lombok을 사용하는 다른 방법은 다음과 같습니다.

  1. https://projectlombok.org/download 방문
  2. JAR 파일을 프로젝트 lib 디렉토리 (예 :)로 다운로드하십시오 $HOME/dev/java/project/libs.
  3. IDE를 시작하십시오.
  4. 파일 🠖 설정을 클릭하십시오 .
  5. 빌드, 실행, 배치 🠖 컴파일러 🠖 주석 프로세서를 확장 하십시오 .
  6. 주석 처리 사용 이 선택되어 있는지 확인 하십시오 .
  7. 프로젝트의 모듈 설정에 따라 상점에서 상대 소스 생성 이 선택 되어 있는지 확인하십시오 ( 모듈 출력 디렉토리 가 작동하지 않으면 돌아와서 다른 설정을 시도하십시오).
  8. 적용을 클릭 하십시오 .
  9. 플러그인을 클릭하십시오 .
  10. 마켓 플레이스를 클릭하십시오 .
  11. 검색 필드를 다음으로 설정하십시오. lombok
  12. 롬복을 설치하십시오 .
  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패키지 에서 가져 와서 프로젝트 롬복 주석 (예 : lombok.Setterlombok.Getter)을 사용할 수 있습니다.


동결 문제 (파일럿 충돌)로 Win10을 중지해야했고 IntelliJ가 열렸습니다. 다시 시작할 때 프로젝트 디렉토리의 아이디어 파일 (workspace.xml)이 변경 된 후 lombok을 통해 getters / setters 메소드를 생성 할 수 없었습니다. 빌드시 "기호를 찾을 수 없습니다". 나는 문제의 기원을 발견하기 위해 조금 씨름했다.
Alex

2
maven-compiler-plugin과 idea (Settings-> Compiler-> Annotation Processors)를위한 주석 처리기 : lombok.launch.AnnotationProcessorHider $ AnnotationProcessor를 설정하는 것을 잊지 마십시오
Jan Kubovy 2016 년

3
이것은 2016.2에서 작동하지 않습니다. 메이븐 웹 프로젝트. 작동 한 유일한 것은 lombok 플러그인을 설치하는 것입니다.
maksimov

아이디어 16.2.2 + gradle + lombok 플러그인 설치. gradle runscript를 사용할 때 아이디어없이 프로젝트를 실행할 수 있습니다. 직접 실행하려면 (코드 핫스왑 작업을 수행하는 유일한 방법이므로) 주석 처리를 활성화해야합니다. 아이디어가 프로젝트를 자동으로 완전히 구성하지 않고 플러그인에도 불구하고 주석이 처리되지 않는 것 같습니까?
Neikius

IDEA 2017.01에서 나를 위해 일했습니다. Lombok 설치는 Intellisense에서 작동했지만 Annotation Processor가 활성화 될 때까지 컴파일되지 않았습니다.
lreeder

73

주석 처리를 활성화하면 작동합니다

그러나 Mac 을 사용 하는 경우 사용 가능한 두 위치 에서 주석 처리를 활성화하십시오 (확인란에 체크 표시) .

1.) Intellij 아이디어-> 환경 설정-> 컴파일러-> 주석 프로세서

2.) 파일-> 기타 설정-> 기본 설정-> 컴파일러-> 주석 프로세서


2
여전히 최신 인텔리전스 15.0.2에서도이 작업을 수행해야했습니다
BeepDog

1
여전히 15.0.4에 존재합니다. 또한 Lambok 버전을 최신 버전으로 업데이트하고 Java 컴파일러를 JAVAC로 변경해야했습니다. 그런 다음 프로젝트를 재건하십시오
Srikanta

여전히 IntelliJ 2016.1.3에서 수행해야합니다. :) 2 개의 주석 프로세서를 설정해야합니다. 잊었을 때의 고통!
Ray Hunter

여전히 IntelliJ 2016.3에서해야합니다 :)
Sukesh Kotian

심지어 두 곳 모두에서 활성화하여, 인 IntelliJ 2016년 3월 2일 여전히 :( 롬복 1.16.12으로 컴파일에 실패
arcuri82

56

이 문제 해결의 그림 표현.

먼저 주석 프로세서를 활성화하고 시도하십시오. 이것은 작동하거나 작동하지 않을 수 있습니다. 여기에 이미지 설명을 입력하십시오

그것을 게시하면 intellij에서 lombok 플러그인을 설치할 수 있습니다 (설치 후 Intellij가 플러그인을 활성화하기 위해 다시 시작하므로 작업을 저장하십시오.) (Intellij는 다시 시작하기 전에 모든 변경 사항을 저장합니다. ) 아래 스크린 샷 :

여기에 이미지 설명을 입력하십시오


3
고맙습니다 .. 같은 문제가 있습니다. Annotation 구성을 설정하기 전에 플러그인 설치를 잊었습니다. :)
TYL

19
  1. 프로젝트에 올바르게 추가되었는지 확인하십시오.

Gradle의 예 :

 dependencies {
     compileOnly 'org.projectlombok:lombok:1.18.8'
     annotationProcessor 'org.projectlombok:lombok:1.18.8'
     ...
 }
  1. IDE 용 Lombok 플러그인 설치
  2. IDE (IntellijIdea)에서 "주석 처리 사용"체크 상자를 선택하고 Eclipse와 같은 다른 IDE에 대해 이와 비슷한 것이 있는지 전혀 모른다.

1
이것, 이것 그리고 이것의 천 배입니다. 감사합니다, 나는 1 시간 동안 갇혀 있었다
ch1ll

1
네, 맞습니다. 먼저 빌드 설정을 확인한 다음 IDE 설정을 확인해야합니다. 고마워요!
Eric Tan

이것이 실제로 작동 한 유일한 것입니다! 왜 13 개만 좋아할까요?!
doctorram

나를 위해 일한 유일한 솔루션 : D 감사합니다 !!
Bianca

9

IntelliJ 2018.3을 사용하여 참조 하기 위해 세 가지 단계에 따라 @Data주석을 사용 하여이 문제를 해결했습니다 getter/setter.

  1. 파일-> 설정-> 빌드, 실행, 배포-> 주석 프로세서-> 주석 처리 사용;

여기에 이미지 설명을 입력하십시오

변경 사항 을 적용 해야합니다.

  1. 동일한 설정 대화 상자에 플러그인 lombok 을 설치하십시오 .

여기에 이미지 설명을 입력하십시오

  1. 지금은 충분 해 보입니다. IntelliJ를 다시 시작한 다음 프로젝트를 다시 빌드해야합니다.

최고의 소원 :)


당신은 maven이나 gradle을 가지고 있었습니까? 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
0x016

0x01Brain 내가 @ 그 시간에 받는다는을 사용하여, 지금은 대신 Gradle을을 사용하여. 귀하의 질문에 관해서는 세부 사항을 설명하기 위해 새로운 특정 질문을 시작할 수 있기를 바랍니다. 전문가가 많이 있습니다.)
Hearen

고마워요. Depedencies에서 충돌이 발생했습니다. utils 모듈에서 module-core를 가져오고 충돌을 일으킨 core 모듈에서 utils module을 가져 왔습니다.
0x0118

8

다음과 같이이 두 단계를 모두 확인한 경우

  1. 주석 사용 : 이것은 IntelliJ 환경 설정에서 수행됩니다.
  2. 롬복을 IntelliJ classPath로 가져 오기 (환경 설정-> 플러그인)

그래도 오류가 발생 하면 컴파일러JAVAC 또는 ECLIPSE 인지 확인하십시오 .

환경 설정-> 빌드, 실행, 배치-> 컴파일러-> Java 컴파일러에서 컴파일러를 확인할 수 있습니다.

컴파일러 사용을 Javac (Eclipse 인 경우)로 변경하십시오. 이것이 나를 위해 일한 것입니다.


8

최신 Gradle 버전에서는 annotationProcessor를 사용해야합니다.

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

7

여기 에 언급 된대로 인용 : "외부 컴파일러 옵션을 활성화하고 주석 프로세서를 활성화하거나 외부 컴파일러를 비활성화하고 모든 주석 컴파일러를 롬복으로 작동하지 않도록 설정해야합니다." 이것은 내 문제를 해결했습니다. 이 오류를 받기 전에 Scala 플러그인을 추가 했으므로 플러그인이 위의 설정 중 일부를 변경 한 것으로 보입니다.


7

intellij를위한 플러그인이 있습니다. 여기를 참조하십시오 : https://projectlombok.org/download.html


2
이 플러그인은 Intellij의 설정 / 플러그인 메뉴에서 설치할 수 있습니다. 최신 플러그인이 설치되어 있는지 확인하십시오. 최신 플러그인으로 업그레이드하면 효과적이었습니다.
JasonM1 2016 년

5

롬복이 프로젝트의 의존성으로 있습니까? 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-> 환경 설정-> 플러그인-> 저장소 찾아보기-> "롬복"검색-> 플러그인 설치-> IDEA 적용 및 재시작


2

여전히 문제가있는 분들을 위해 :

주석 프로세서를 활성화하고 IntelliJ Lombok 플러그인을 설치하는 위의 단계 외에도 빌드-> 프로젝트 다시 빌드해야했습니다.


2
또한 Intellij가 불평을 멈추기 전에 캐시를 무효화하고 다시 시작해야했습니다.
한스

2

1 、 아이디어 용 롬복 플러그인 설치

Intellij 아이디어-> 환경 설정-> 플러그인-> lombok 입력-> 저장소 검색-> 설치-> IDEA 다시 시작

2 、 구성 롬복 플러그인

주석 처리를 활성화하면 작동합니다

그러나 Mac을 사용하는 경우 다음 두 곳에서 주석 처리를 활성화해야합니다.

Intellij Idea-> Preferences-> Build, Execution, Deployment-> Compiler-> Annotation Processors에서 "Annotation Processing 활성화"의 체크 박스를 체크하십시오. 파일-> 기타 설정-> 기본 설정-> 빌드, 실행, 배포-> 컴파일러-> 주석 프로세서에서 "주석 처리 사용"의 확인란을 선택하십시오.


IntelliJ의 기타 설정에 기본 설정이 표시되지 않습니다. 이들은 여전히 ​​존재합니까? Ultimate Edition-version11.03
thenakulchawla를 사용하고 있습니다.

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로 다시 설정했는데 정상적으로 작동했습니다. JDK8에서 컴파일되지 않는 이전 버전의 Lombok 일 수 있습니다.


나도 같은 문제가 있었다. IntelliJ가 종속성을 다시 다운로드하도록 Lombok 버전을 변경하십시오.
이상현

0

나는 같은 문제가 있었으므로 나중에 내 망각에 대한 참조를 위해 이것을 남겨 둘 것입니다.

경우 Alt+Enter에 보내고 @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. 볼 수 있으면이 항목을 선택하면 문제가 해결 될 수 있습니다.

라이브러리 및 라이브러리 범위를 확인할 수 있습니다 : 프로젝트 설정 / 모듈 / 종속성 탭 (롬복 검색)



0

내 경우에는 아래에 언급 된 모든 내용이 있었지만 여전히 작동하지 않았습니다.

  1. lombok 플러그인이 올바르게 설치되었습니다
  2. 주석 프로세서도 확인했습니다.
  3. Java 컴파일러가 JAVAC로 설정되었습니다.

내 문제를 해결하려면

  1. 2017 년 10 월 7 일 현재 롬복을 최신 버전 (v0.15)으로 업데이트하십시오.
  2. IntelliJ를 다시 시작하십시오.
  3. 프로젝트를 다시 빌드하십시오.

아래에서 프로젝트를 업데이트하고 다시 작성하는 방법에 대한 스크린 샷을 참조하십시오.

롬복을 업데이트하는 방법

프로젝트를 재건하는 방법


0

cannot find symbol variable logIntelliJ 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

lombok 라이브러리가 올바르게 설정되면 위에서 언급 한 많은 컴파일되지 않은 주석을 클릭하십시오 .Alt-Enter 올바른 가져 오기가 나타나고 코드가 컴파일됩니다. -알아내는 데 시간이 걸렸습니다. 사람들이 단순한 명백한 것을 놓칠 수 있도록 여기에 넣었습니다.


0

MacOS의 Eclipse 사용자의 경우이를 수행하십시오. 그것은 나를 위해 일했다.

  1. lombok.jar을 Eclipse.app/Contents/MacOS디렉토리에 복사하십시오 .
  2. -javaagent:lombok.jarEclipse.app/Contents/Eclipse/eclipse.ini 파일의 끝에 추가 하십시오.
  3. Eclipse를 다시 시작하고 프로젝트 속성에서 "주석 처리"를 활성화하십시오.

이것을 참조


0

모든 답변에서 언급 된 것 외에도 mvn 클린 설치가 작동하도록 pom.xml 구성에 아래 코드를 추가해야합니다. 이 코드를 추가하기 전에 게터와 세터에 대한 기호를 찾을 수 없었습니다.

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

0

나를 위해 일한 것 :

  1. 설치된 Lombok 플러그인을 새로 제거했습니다.
  2. "Annotation Plugin 활성화"를 체크했습니다
  3. 같은 페이지에서 "프로젝트 클래스 경로에서 프로세서 확보"를 선택했습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.