Lang/Servlet&JSP
java.lang.NoClassDefFoundError: javax/servlet/jsp/jstl/core/Config 오류 조치
호형
2022. 3. 4. 15:28
프로젝트 초기 구성중 다음과 같은 오류가 발생하였다.
java.lang.ClassNotFoundException: javax.servlet.jsp.jstl.core.Config
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:581) ~[na:na]
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178) ~[na:na]
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522) ~[na:na]
at org.springframework.web.servlet.support.JstlUtils.exposeLocalizationContext(JstlUtils.java:103) ~[spring-webmvc-5.3.9.jar:5.3.9]
at org.springframework.web.servlet.view.tiles3.TilesView.renderMergedOutputModel(TilesView.java:140) ~[spring-webmvc-5.3.9.jar:5.3.9]
at org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:316) ~[spring-webmvc-5.3.9.jar:5.3.9]
보통의 ClassNotFoundException이 개발과정에 발생을 한다면 필요로 하는 dependency가 없어서 발생하는 문제라고 보면 된다. 즉 이 문제도 jstl 관련된 dependency가 없다는 것이다.
해결책은 jstl dependency를 넣어주면 된다.
pom.xml
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
참고로 JSTL 은 일반적으로 TomEE , JBoss AS / EAP / WildFly , Payara / GlassFish , WebLogic 등과 같은 완전한 Java EE 컨테이너에 의해 이미 기본 제공 되지만 Tomcat 및 Jetty 와 같은 베어본 JSP/Servlet 컨테이너에는 제공되지 않는다고 한다. 그들에게는 웹 애플리케이션과 함께 JSTL을 직접 제공해야 한다.
끝!