2012-01-04 2 views
3

JSP 페이지가 있습니다. 시간이지나면서 어떻게 든 길어졌습니다.JSP 페이지가 너무 길어서 컴파일 할 수 없습니다.

최근에는 JSP 페이지를 컴파일하고 있었고, 난

org.apache.jasper.JasperException: Unable to compile class for JSP: 

    An error occurred at line: 320 in the generated java file 
    The code of method _jspService(HttpServletRequest, HttpServletResponse) is exceeding the 65535 bytes limit 

Stacktrace: 
at org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:102) 
at org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:331) 
at org.apache.jasper.compiler.JDTCompiler.generateClass(JDTCompiler.java:457) 
at org.apache.jasper.compiler.Compiler.compile(Compiler.java:378) 
at org.apache.jasper.compiler.Compiler.compile(Compiler.java:353) 
at org.apache.jasper.compiler.Compiler.compile(Compiler.java:340) 

내가이 예외를 피하기 위해 어떻게해야 컴파일러에서 예외를 얻었다.?

답변

6

JSP 컴파일 중에 JSP 파일의 전체 본문이 단일 try 블록 안에 배치됩니다. Java 블록에 포함될 수있는 한계는 64KB입니다. JSP 파일의 생성 된 Java 코드의 크기가 분명히 초과했습니다.

아마도 JSP 파일에는 매우 많은 HTML 또는 조건문이 있습니다. <jsp:include>에 포함 된 작은 부분으로 JSP 파일을 분할해야합니다. 예를 들어, 헤더, 꼬리말, 메뉴, 본문 및/또는 조건부로 표시된 부품 당 하나의 JSP 포함 파일이 있습니다. 재사용 성이 뛰어난 추가 장점이 있습니다. 그 자바 코드가 실제로 일반 자바 클래스에 속하는 동안

또는, 아마 당신은, 스크립틀릿 (그 <% %> 일)를 사용하여 JSP 파일 안에 원시 자바 코드를 작성하는 실망 oldschool 나쁜 관행을 따랐다. Get rid을 JSP에있는 자바 코드로 변환 한 후 전체 코드를 servlet 클래스로 옮긴다. 거기에서 당신은 하나의 커다란 유지할 수없는 "신"블록 안에 모든 것을 넣지 않고 잘 재사용 가능한 클래스/메소드를 작성할 수있는 자유를 누릴 수 있습니다.

+3

아아 옛날 try-block 제한, 조만간에 모두가 실행되어 적절한 JSP 코딩을 배우는 것이 어렵습니다. :) – pap

0

문제가 해결되었습니다.

standalone.xml의 웹 하위 시스템 -> 구성에서 keep-generated = false를 추가하십시오.

그것은 나를 위해 일했습니다.

관련 문제