제가 정리한 블로그의 스프링부트의 간단한 예시글이 작성한지 벌써 2년이 지났네요...
그 동안 스프링부트와 jstl도 버전이 바뀌었을테고 그로인해 실행 오류가 발생하는 경우가 종종 있는데요
오늘은 이 내용을 정리해 보려고 합니다.
스프링부트 안에 내장된 탐캣의 버전이 10으로 올라가면서 javax.servlet에서 jakarta.servlet로 패키지 이름이 바뀐 것 같네요
(stackoverflow 참고링크 : https://stackoverflow.com/questions/64597921/jakarta-servlet-servletexception-java-lang-noclassdeffounderror-javax-servlet)
아래와 같은 에러로그를 통해 jstl 쪽 호출에 문제가 있다고 유추할 수있겠네요...
Error: javax/servlet/jsp/tagext/TagLibraryValidator
해결방법은 의외로 간단했습니다.
먼저 프로젝트 내에 pom.xml 파일을 열어 줍니다. 그리고 찾기를 통해 아래와 같은 부분을 찾아주세요~

<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
버전까지 똑같지 않더라도 jstl 관련 부분이 있을텐데 이 부분을 모두 지워주세요~
그리고 아래를 복사하여 붙여넣기 해주시면 됩니다.
<!-- jstl -->
<!-- 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>
자 요렇게 위와 같이 바꿔 놓았다면, maven을 리로딩 해주면 적용될 것 입니다.
jsp 안에 태그 라이브러리는 그대로 사용해도 된다고 합니다~
특별히 수정할 껀 없나보네요!
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<html>
<head>
<meta charset="UTF-8">
<title>JSP Sample Page</title>
</head>
<body>
<div>[${name}]님의 시험성적입니다.</div>
<c:forEach var="item" items="${list}">
${item} <br />
</c:forEach>
</body>
</html>
그럼 이제 maven만 리로드 해보도록 하겠습니다.
아래 그림과 같이 메이븐 패널 열어주시고, 2) 리로드 아이콘을 눌러 잠시 기다려 보시면 됩니다~

그러면 이제 에러가 나지 않을 것이고 정상적으로 실행될 것입니다!!
혹시 위의 아이콘들을 찾을 수 없다면 아래와 같이 pom.xml 파일 우클릭 하여 실행해도 동일한 결과가 실행되니
참고해 주시기 바랍니다.

'SPRING BOOT' 카테고리의 다른 글
[스프링부트 10] Spring Boot 로그 설정해 보기 (1) | 2021.11.30 |
---|---|
[스프링부트 9] Spring Boot 데이터베이스(MSSQL) 연결 2 (2) | 2021.11.22 |
[스프링부트 8] Spring Boot 데이터베이스(MSSQL) 연결 1 (2) | 2021.11.17 |
[스프링부트 7] Spring MVC View 만들기 (Thymeleaf) (0) | 2021.11.11 |
[스프링부트 6] Spring MVC View 만들기 (JSP) (7) | 2021.11.10 |