org.apache.jasper.JasperException: java.lang.ClassNotFoundException: org.apache.jsp.WEB_002dINF.index_jsp

2019.05.27 14:21etc/error

오래된, 혹은 이전에 개발된 프로젝트를 오랜만에 구동시키면 다음과 같은 오류를 만날 수 있다.

 

org.apache.jasper.JasperException: java.lang.ClassNotFoundException: org.apache.jsp.WEB_002dINF.index_jsp
org.apache.jasper.servlet.JspServletWrapper.getServlet(JspServletWrapper.java:177)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:369)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
root cause

java.lang.ClassNotFoundException: org.apache.jsp.WEB_002dINF.index_jsp
java.net.URLClassLoader.findClass(URLClassLoader.java:382)
org.apache.jasper.servlet.JasperLoader.loadClass(JasperLoader.java:132)
org.apache.jasper.servlet.JasperLoader.loadClass(JasperLoader.java:63)
org.apache.jasper.servlet.JspServletWrapper.getServlet(JspServletWrapper.java:172)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:369)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)

 


찾아보니 여러 경우가 있었다.

 

먼저 jsp 가 제대로 컴파일 되지 않았을 경우 발생할 수 있다고 한다.

 

이럴 경우에는 단순히 clean 또는 tomcat 아래의 빌드된 파일들을 삭제해주면 쉽게 해결된다고 한다.

 

그런데 컴파일이 제대로 되지 않는 경우는 일시적일 수 있지만 때론 jar파일의 중복, 충돌, dependency 버전이 맞지 않는 등 다양한 경우에 발생할 수 있다고 하니 이 부분도 같이 체크하면 쉽게 해결할 수 있다.

 

하지만 필자와는 상관없는 경우였다.


위의 방법이 통하지 않아서 계속 해매다보니 java와 tomcat 버전이 이전에 개발된 버전과 다르다는것을 알았다.

 

정확히는 알 수 없었지만 버전을 맞춰주면 되지 않을까? 하는 생각이 강하게 들었다.

 

그래서 일단 기존에 실행되었던 대로 java와 tomcat 버전을 맞춰주니 더이상 오류가 발생하지 않았다.

 

이건 걍 뇌피셜인데 java와 tomcat 의 버전을 달리하니 이와 관련되어있던 라이브러리중에서 dependency 가 맞지 않는게 존재했을 것이고 그래서 위와 같은 오류가 발생한 것이 아닌가 싶다.