블로그 프로젝트를 진행하면서 로그인 셋팅 작업을 마무리하고 테스트를 해보려는데 다음과 같은 에러가 발생했다.
header.jsp파일에 jstl태그를 추가하고 pom.xml파일에 라이브러리가 적용된걸 확인했는데 계속해서 500에러가 발생했다.
부트 실행에도 문제가 없었고, 주소 매핑이 문제라면 404에러가 떠야하는데 머리가 복잡...
구글링을 해보고 톰캣 버전을 낮춰보기도하고, jstl파일이 2개가 중복되어있다는 글을 보고 확인해봤는데도 해결되지 않았다.
마지막에 스프링부트 3.0이상 부터는 jstl 1.2를 추가하면
java.lang.ClassNotFoundException: javax.servlet.jsp.tagext.TagLibraryValidator 에러가 발생한다고 한다.
<수정 전>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
<수정 후>
<!-- https://mvnrepository.com/artifact/jakarta.servlet.jsp.jstl/jakarta.servlet.jsp.jstl-api -->
<dependency>
<groupId>jakarta.servlet.jsp.jstl</groupId>
<artifactId>jakarta.servlet.jsp.jstl-api</artifactId>
<version>3.0.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/jakarta.servlet/jakarta.servlet-api -->
<dependency>
<groupId>jakarta.servlet</groupId>
<artifactId>jakarta.servlet-api</artifactId>
<version>6.0.0</version>
<scope>provided</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/org.glassfish.web/jakarta.servlet.jsp.jstl -->
<dependency>
<groupId>org.glassfish.web</groupId>
<artifactId>jakarta.servlet.jsp.jstl</artifactId>
<version>3.0.1</version>
</dependency>
pom.xml파일 수정하고 maven 프로젝트 재실행을 하니 에러가 해결됬다.
이것도 역시 javax에서 jakarta로 변경되면서 발생한 문제인 듯 하다.