Spring Boot

스프링부트 3.0 javax/servlet/jsp/tagext/TagLibraryValidator 에러 해결하기

dev.mk 2023. 6. 10. 17:17
반응형

java.lang.NoClassDefFoundError javax/servlet/jsp/tagext/TagLibraryValidator

오랜만에 스프링부트에서 jsp+jstl 조합으로 개발할 일이 있어 셋팅하다 한참을 삽질 후 해결법을 설명한다.

 

<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>3.1.0</version>

본인의 스프링부트 버전 3.1.0

 

일반적인 스프링에서 jstl을 사용하면 아래의 의존성을 추가하면 되었지만 계속 javax/servlet/jsp/tagext/TagLibraryValidator 에러발생

<dependency> 

  <groupId>javax.servlet</groupId> 

  <artifactId>jstl</artifactId> 

  <version>1.2</version> 

</dependency> 

 

 

우선 스프링부트 3.0에서 Servlet의 패키지가 변경됨

javax.servlet     =====>    jakarta.servlet

 javax.* 부분을 jakarta.* 으로 변경해야 함

그러므로 javax.servlet 패키지의 의존성 사용불가

 

그래서 아래의 의존성 4개를 추가하면 문제없이 된다.

 

 

pom.xml

<dependency>
    <groupId>org.apache.tomcat.embed</groupId>
    <artifactId>tomcat-embed-jasper</artifactId>
    <scope>provided</scope>
</dependency>
		
<dependency>
    <groupId>jakarta.servlet.jsp.jstl</groupId>
    <artifactId>jakarta.servlet.jsp.jstl-api</artifactId>
</dependency>
		
<dependency>
    <groupId>org.glassfish.web</groupId>
    <artifactId>jakarta.servlet.jsp.jstl</artifactId>
</dependency>

<dependency>
    <groupId>jakarta.servlet</groupId>
    <artifactId>jakarta.servlet-api</artifactId>
    <scope>provided</scope>
</dependency>
반응형