화분

스프링부트 3 에서 jstl 사용 시 에러 해결 본문

Study/JAVA

스프링부트 3 에서 jstl 사용 시 에러 해결

ExcellEast 2023. 10. 9. 14:39

스프링부트 3을 이용하여 jsp와 jstl을 이용할때 아래와 같은 에러가 뜨는 경우가 있다.

 

ERROR 7332 --- [nio-8080-exec-2] o.a.c.c.C.[.[.[.[mvcMemberListServlet]   : Servlet.service() for servlet [mvcMemberListServlet] in context with path [] threw exception [java.lang.NoClassDefFoundError: javax/servlet/jsp/tagext/TagLibraryValidator] with root cause

 

TagLibraryValidator 클래스를 찾을수 없단 에러인데 구글링 해본 결과 톰캣 10에서 호환되지 않는 문제가 있는거 같다. 몇시간 동안 열심히 구글링 해본 결과 아래와 같은 방법을 통해 이 문제를 일단락 매듭 지었다.

 

jstl을 사용하는 파일에서 taglib 지정:

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

아래와 같은 build.gradle 설정

 

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-web'
    implementation 'jakarta.servlet:jakarta.servlet-api:6.0.0'

    //JSP 추가 시작
    implementation 'org.apache.tomcat.embed:tomcat-embed-jasper'
    //새로 추가된 부분 
    implementation 'jakarta.servlet.jsp.jstl:jakarta.servlet.jsp.jstl-api:3.0.0'
    implementation 'org.glassfish.web:jakarta.servlet.jsp.jstl:3.0.1'
    //implementation 'jakarta.servlet.jsp.jstl:jakarta.servlet.jsp.jstl-api:1.2.4'
    //implementation 'javax.servlet:jstl:1.2'

    compileOnly 'org.projectlombok:lombok'
    annotationProcessor 'org.projectlombok:lombok'
    //providedRuntime 'org.springframework.boot:spring-boot-starter-tomcat'
    testImplementation 'org.springframework.boot:spring-boot-starter-test'
}

 

위의 코드에서 아래의 설정을 넣어준 결과 원활히 실행되었다.

:

 implementation 'jakarta.servlet.jsp.jstl:jakarta.servlet.jsp.jstl-api:3.0.0'
 implementation 'org.glassfish.web:jakarta.servlet.jsp.jstl:3.0.1'

 

'Study > JAVA' 카테고리의 다른 글

스레드의 코어 할당과 Yield()  (0) 2024.03.10
[Spring]gradle 버전이 맞지 않은 문제  (0) 2023.12.27
[Spring]MySQL 연동 관련 문제  (0) 2023.12.27