본문 바로가기

트러블슈팅

Error. org.apache.jasper.JasperException: JSP를 위한 클래스를 컴파일할 수 없습니다. The code of method _jspService(HttpServletRequest, HttpServletResponse) is exceeding the 65535 bytes limit Stacktrace:

문제

JSP 프로젝트에서 어떤 화면에 들어가려고 하는데, 아래와 같은 에러가 브라우저에 떴다.

Error. org.apache.jasper.JasperException: JSP를 위한 클래스를 컴파일할 수 없습니다.: 
코드 생성된 자바 파일 [/Users/user/Library/Caches/JetBrains/IntelliJIdea2023.1/tomcat/.../work/Catalina/localhost/ROOT/org/apache/jsp/WEB_002dINF/jsp/.../test_jsp.java]의 [110] 행에서 오류가 발생했습니다. 
The code of method _jspService(HttpServletRequest, HttpServletResponse) is exceeding the 65535 bytes limit Stacktrace:

 

원인

에러 문구가 'The code of method _jspService(HttpServletRequest, HttpServletResponse) is exceeding the 65535 bytes limit Stacktrace:' 인 것을 보아, JSP를 이용해 JAVA로 컴파일할 때 JSP의 크기가 커서 메서드의 크기가 65535 bytes를 초과한 거 같다.

해결

메서드가 크기를 줄여주어야 하므로, 근본적인 해결 방법은 JSP파일 내 JSP와 Javascript 코드를 분리해서 크기를 줄이는 방법이다.

하지만, JSP 파일을 변경하지 않고, 설정값을 변경해서 문제를 해결할 수 있다.

 

SprigBoot라면 아래와 같이 application.yml 파일에 mappedfile 설정을 추가해주면 된다.

server:
  servlet:
    jsp:
      init-parameters:
        mappedfile: false

 

Tomcat을 사용하고 있다면, tomcat의 web.xml에서 mappedfile 설정을 추가해주면 된다.

 

빨간색 박스 부분을 설정에 추가해주면 된다.

 

참고 자료

https://oingdaddy.tistory.com/390