문제
SpringBoot 를 사용한 프로젝트 중
HttpServletRequest 를 받아와 헤더 정보를 출력하는 코드에서
제목과 같은 에러를 만났다.
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@Slf4j
@RestController
public class LoggingController {
@GetMapping(value = "/log-headers")
public void logHeaders(HttpServletRequest request, HttpServletResponse response) {
var headerNames = request.getHeaderNames();
while (headerNames.hasMoreElements()) {
String headerName = headerNames.nextElement();
String headerValue = request.getHeader(headerName);
log.info("Header - {}: {}", headerName, headerValue);
}
}
}
build.gradle
원인
Jakarta EE 9 a new top-level jakarta package, replacing EE 8’s javax top-level package. For example, the Servlet specification in Jakarta EE 8 uses a javax.servlet package but this has changed to jakarta.servlet in EE 9.
SpringBoot 공식 문서를 참조해보니 , 3.x 버전부터는 javax 가 아닌 jakarta 버전만을 지원한다고 되어있다.
해결
최신 3.x SpringBoot 버전은 Java 버전 또한 17부터 지원한다.
메이저 버전 업데이트인 만큼 따라서 기존에 2.x 버전을 쓰던 방식과 달라진점을 체크해봐야한다.
'JVM > Error' 카테고리의 다른 글
[Kafka] Error: 재시작 에러 (0) | 2023.10.10 |
---|---|
JUnit5 Error (No found test error) (0) | 2022.09.01 |
Eclipse Project Error (빨간 느낌표!) (0) | 2019.06.04 |
JAVA 컴파일&실행 in CMD (0) | 2019.05.27 |
[Java] Couldn't find default class (0) | 2019.05.22 |