IT/오류 컬렉터 조르디

[spring] org.apache.jasper.JasperException: java.lang.ClassNotFoundException: org.apache.jsp

토끼개발자 조르디 2025. 6. 16. 11:38

Spring 프로젝트 오류 발생

로컬서버를 동작시키고 특정 페이지로 리다이렉트 + 그 페이지에서 get list API 를 통해 데이터를 가져와서 보여주는 작업을 실행하려고 했는데 갑자기 오류가 발생했다. 

 

 

ClassNotFoundException: org.apache.jsp.WEB_002dINF.views.board.list_jsp

 

라길래 list.jsp 코드에 뭔가 문제가 있나싶어서 요리조리 살펴봤지만 아무리 생각해도 문제되는 코드가 없었다. 아래에 그 당시 코드를 작성해둘테니 찾아보고 싶은 분들은 한번 도전 GOGO ^^

 

<%--
  Created by IntelliJ IDEA.
  User: student
  Date: 25. 6. 16.
  Time: 오전 9:48
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%>

<!DOCTYPE html>
<%@ include file="../layouts/header.jsp"%>

<%--개별 페이지 --%>
<h1 class="page-header my-4"><i class="fas fa-list"></i>글 목록</h1>

<table class="table table-hover">
    <thead>
    <tr>
        <th style="width: 60px">No</th>
        <th>제목</th>
        <th style="width: 100px">작성자</th>
        <th style="width: 130px">등록일</th>
    </tr>
    </thead>
    <tbody>
    <c:forEach var="board" items="${list}">
        <tr>
            <td>${board.no}</td>
            <td>
                <a href="get?no=${board.no}">${board.title}</a>
            </td>
            <td>${board.writer}</td>
            <td>
                <fmt:formatDate pattern="yyyy-MM-dd" value="${board.regDate}"/>
            </td>
        </tr>
    </c:forEach>
    </tbody>
</table>
<div class="text-end">
    <a href="create" class="btn btn-primary">
        <i class="far fa-edit"></i>
        글쓰기
    </a>
</div>
<%@ include file="../layouts/footer.jsp"%>

 

 

혼자 힘으로 해결하고 싶었지만 원래 한 30분이 지나면 바로 G선생을 찾는게 오히려 도움이 된다는 것을 알게 된지 어연 2년.... 빠르게 G선생을 찾았다. 

 

그리고 현재 상황 + 내가 작성한 코드 + 오류 를 넣었더니 꽤나 도움안되는 긴 답변이 돌아왔다. 

 


G선생의 답변

이번 오류는 다음과 같은 JSP 컴파일 오류입니다:


❌ 오류 메시지 요약

 
org.apache.jasper.JasperException: java.lang.ClassNotFoundException: org.apache.jsp.WEB_002dINF.views.board.list_jsp

 

이 에러는 JSP 파일을 자바 클래스로 컴파일하는 과정에서 실패해서, 해당 클래스(list_jsp)가 생성되지 않았거나 손상된 경우 발생합니다.


✅ 원인 정리

  1. JSP 내부 문법 오류
  2. /WEB-INF/views/board/list.jsp 경로가 잘못되었거나 파일 없음
  3. JSP 캐시가 꼬여서 이전 오류가 남아 있음
  4. JSP를 컴파일한 .java 혹은 .class 파일이 삭제됨

 

🔧 해결 방법

✅ 1. JSP 캐시/컴파일된 파일 삭제

 

톰캣은 JSP를 실행 시 .java와 .class 파일로 변환해 work 디렉토리에 저장합니다. 이 캐시가 꼬이면 위 오류 발생할 수 있습니다.

 

▶ 방법: 톰캣 정지 후 아래 경로 삭제

<프로젝트 루트>/work/Catalina/localhost/<프로젝트명>/org/apache/jsp/

 

 

✅ 2. JSP 파일에 문법 오류가 있는지 확인

 

최근 footer.jsp나 list.jsp 등을 수정하면서 JSP 문법 오류가 들어갔을 가능성이 있습니다.

 

 

✅ 3. 파일 경로 오타 확인

 

이 경로가 존재하지 않거나 오타가 있으면 동일한 오류 발생할 수 있습니다.


 

이렇게 알려주길래 work 디렉토리를 확인하려고 인텔리제이를 눈비비고 찾아봤지만 도대체 어디있는지 모르겠더라....

내가 못찾는 건가 싶어서 구글링을 해봤는데 아래의 글을 따라 들어가봐도 도통 어디있는지 보이지 않았다.... 카탈리나인가 카탈레나인가 뭔가.. 도대체 어디 있는 것임....!!! 

왜 항상 나에게 이런일이???

 

https://holog.tistory.com/60

 

[에러] java.lang.ClassNotFoundException: org/apache/jsp/WEB_002dINF/views/ 에러 해결

jsp 파일이 있는 경로 중 폴더 명칭을 변경하였더니 controller의 경로를 맞게 설정하여도 java.lang.ClassNotFoundException: org/apache/jsp/WEB_002dINF/views/ 에러가 계속 발생하면서 jsp 경로를 찾지 못했다. clean도

holog.tistory.com

 


꽤나 어두웠던 등잔 밑

그래서 생각을 바꿨따. 왠지 G선생이 알려준게 뭔가 이상한 것 같기도 하고... 다른 이유가 있는건 아닐까 싶어서 다시 구글링을 했다. 오류가 난 그 코드를 그대로 입력했다. 

 

그 결과 다양한 글들이 나왔는데, 다들 17년, 22년, 10년 전 등 인텔리제이 UX.UI가 왠지 한참 전일 것 같은 글들만 보였다. 그런데 좀만 더 내리니 2024년 글이 보였다. 왠지 느낌이 좋아서 들어갔고 덕분에 해결할 수 있었다. 

 

 

 

https://velog.io/@singingsandhill/debugnote2

 

JSP 파일 컴파일 오류

ClassNotFoundException: org.apache.jsp.WEB_002dINF.views.index_jsp: JSP 2. 문제 설명 웹 애플리케이션을 배포하고 실행하는 과정에서 HTTP 500 내부 서버 오류가 발생했습니다.

velog.io

 

 


 

에러 원인을 적어보자면 정말 쏘 심플했다.

 

 

띄어쓰기를 안 해서 그랬다

 

 

 

ㅎㅎㅎㅎ

 

 

띄어쓰기를 안 함

 

JSP 파서가 contentType 속성을 올바르게 해석할 수 없음

▶ JSP 파일을 컴파일 하지 못함

▶ 계속 ClassNotFoundException 발생

 

 

너~무 어이가 없었지만 해결해서 정말 다행이었다. 물론내잘못이라할말은없지만

 

앞으로 아래와 같은 오류가 뜬다면, views 폴더 안의 해당 jsp 파일을 첫줄부터 세세하게 뜯어보도록 하자.

 

org.apache.jasper.JasperException: java.lang.ClassNotFoundException: org.apache.jsp.WEB_002dINF.views.board.list_jsp

 

 

해결 완룟!!!