Error/Java

[Java] 이클립스 Lombok 설치 되었는데도 못 알아 먹을 때, ~ is undefined for the type TodoEntity 오류

돌맹이떼굴떼굴 2025. 5. 10. 14:57

1. 문제

롬복 설치 후, @Data 에너테이션으로 getter, setter 생성된 것을 Outline으로 확인했는데도,

getId() is undefined for the type TodoEntity

위 에러가 뜨면서, getId()가 정의되어 있지 않는다고 나온다.

 

2. 문제 원인

Lombok이 제공하는 @Data 어노테이션이 제대로 인식되지 않았기 때문이다. @Data는 자동으로 getId(), getTitle() 같은 getter 메서드를 생성해주지만, Eclipse에서 Lombok 설정이 안 되어 있으면 이 메서드들을 컴파일러가 인식하지 못한다. 인텔리제이만 쓰다가 이클립스 쓰려니까 기억이 가물가물한 것도 있다.

 

이클립스에서 @Data, @Builder 같은 Lombok 애너테이션을 썼을 때도, 컴파일 오류나 인식 불가 현상이 생기는 이유는 빌드 캐시, 인덱싱 문제, 또는 프로젝트 설정 불일치 때문이다.

 

3. 문제 해결

✅ 1. Maven → Update Project (Alt + F5)가 필요한 이유

🔹 목적:

  • pom.xml의 의존성 동기화 수행
  • Eclipse 내부에 저장된 classpath, 빌드 경로, 라이브러리 캐시를 재생성

🔹 필요한 상황:

  • pom.xml을 수정했는데도 라이브러리가 적용되지 않는 경우
  • Lombok과 같이 애노테이션 기반 코드를 생성하는 라이브러리를 IDE가 인식하지 못할 때
  • The method getId() is undefined 같은 IDE 수준 오류 발생 시

✅ 2. Project > Clean이 필요한 이유

🔹 목적:

  • Eclipse가 저장해 놓은 빌드된 .class 파일과 캐시를 모두 제거하고 다시 컴파일

🔹 필요한 상황:

  • 프로젝트가 정상적으로 동작하지 않거나, 일부 변경 사항이 반영되지 않는 경우
  • Lombok의 코드 생성이 소스 수준에서는 문제없는데 빌드 결과에는 반영되지 않는 경우

✅ 3. Build Automatically 설정 확인 이유

🔹 목적:

  • Eclipse가 파일 저장 시마다 자동으로 컴파일 & 빌드

🔹 필요한 상황:

  • Lombok은 .java를 저장할 때마다 @Data, @Builder 등을 통해 메서드를 자동 생성해야 함
  • 이 옵션이 꺼져 있으면 저장해도 내부적으로 컴파일이 안 돼서 오류 상태가 계속 유지됨

 

3번은 거의 자동 설정이라 잘 되어 있는데, 1번 2번은 이클립스를 자주 사용하지 않다 보니까 생각을 못했다. 나는 2번으로 해결 했다. getter, setter 생성은 되는데 인식을 못하는 경우가 있었는데 Eclipse 내부에 저장된 캐시를 삭제해야 제대로 알아먹나 보다,,,