컴파일 시점에 존재했던 클래스가 런타임에 존재하지 않을 경우 발생한다.
대체로, 의존하는 라이브러리 버전이 서로 호환되지 않는 경우 발생한다.
dependencies 부분에 jstl 라이브러리를 추가하며 문제가 발생하였다.
이번에 새로 Spring을 공부하며 Java17 버전과 Spring boot 3.0 이상의 버전을 사용하게 되었는데 Spring boot 2.0 대 버전의 라이브러리 설정을 그대로 적용해 호환 문제가 발생한 것이었다.implementation 'javax.servlet:jstl:1.2'
Spring boot 3.0 이상 버전부터 Java EE를 jakarta EE 로 대체되었다.
(javax. 에서 jakarta. 로 변경)
Java 상표권 이슈 때문이라고 한다.
다음과 같이 dependencies 설정을 변경하여 문제를 해결함.implementation 'jakarta.servlet:jakarta.servlet-api' implementation 'jakarta.servlet.jsp.jstl:jakarta.servlet.jsp.jstl-api' implementation 'org.glassfish.web:jakarta.servlet.jsp.jstl'