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 내부에 저장된 캐시를 삭제해야 제대로 알아먹나 보다,,,