0. 배경
Spring Initializr로 따로 dependency를 추가하지 않고 스프링 부트 프로젝트를 생성했다.
이후 build.gradle.kts 파일에 Spring Web과 Lombok 라이브러리를 추가했다. (아래 두 줄)
그리고 아래와 같이 annotation processing을 활성화 처리했다.
dependencies {
implementation("org.springframework.boot:spring-boot-starter")
testImplementation("org.springframework.boot:spring-boot-starter-test")
implementation("org.springframework.boot:spring-boot-starter-web")
compileOnly("org.projectlombok:lombok")
}
1. 문제 상황
롬복 테스트를 위해 @Data를 사용해 get 메서드를 호출하니 cannot find symbol 에러가 발생했다.
package com.ssoyeong.studyapplication.controller;
import lombok.Data;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class TestController {
@GetMapping("/test/hello")
public String getHello() {
String name = new TestClass().getName();
return "Hello world!";
}
}
@Data
class TestClass {
private String name;
private String address;
}
2. 해결 과정
롬복 어노테이션을 인식하지 못해서 발생하는 문제이다.
롬복 라이브러리를 추가했으면 Annotation Processor 설정도 함께 해주어야 한다.
dependencies {
implementation("org.springframework.boot:spring-boot-starter")
testImplementation("org.springframework.boot:spring-boot-starter-test")
implementation("org.springframework.boot:spring-boot-starter-web")
compileOnly("org.projectlombok:lombok")
annotationProcessor("org.projectlombok:lombok")
}
맨 아래에 한 줄을 추가했다.
3. 원인
annotationProcessor의 의미는
컴파일러가 어노테이션을 확인할 때, 해당 모듈의 것도 확인해 달라는 뜻이다.
그러므로 롬복은 어노테이션 기반이므로 annotationProcessor 키워드를 사용해 롬복 모듈을 추가하는 한 줄을 작성해야 했다.
참고자료
[자바, Java] Lombok - cannot find symbol 에러 해결 방법
.
tjdtls690.github.io
Spring Boot - build.gradle 파헤치기
1. Gradle 자바 프로젝트에서 외부 라이브러리를 가져다 쓴다는 것은 외부 라이브러리의 .jar를 가져와서 classpath에 추가하는 것이다. build.gradle이라는 파일에 가져다 쓸 라이브러리의 이름, 버전을
jsdysw.tistory.com
'트러블슈팅' 카테고리의 다른 글
[MySQL] Docker로 Mac M1에 MySQL 설치하기 (0) | 2023.11.05 |
---|---|
[JavaScript] addEventListener is not a function (0) | 2023.07.14 |
[Spring MVC] No Mapping for GET WEB-INF/views/main.jsp (0) | 2023.06.26 |
[Servlet] Maven 프로젝트 Tomcat 연동 Servlet 실행하기 (Intellij) (0) | 2023.06.21 |