본문 바로가기
FullStack/41. WEB.WAS

Tomcat 8.5 JSP 1.8 문법 오류(Lambda)

by nakanara 2021. 9. 16.
반응형

 

Tomcat 8.5 버전에서 JSP에 람다식 사용 시 오류가 발생했다.

Tomcat 9.X 버전부터는 컴파일 버전이 1.8이 기본으로 설정되어 있지만,
Tomcat 8.5 버전의 경우 컴파일 버전이 1.7이 기본으로 설정되어 있어서 발생하였다.

람다식 외에도 1.8의 기능을 JSP에서 사용하는 작성하면, 실행되는 시점에 오류가 발생한다.
개발 JVM 버전과 맞추는 것이 좋은 것 같다.

해결 방법

생성한 애플리케이션이 아닌 Tomcat에 존재하는 web.xml 수정

위치: TOMCAT_HOME/conf/web.xml

  • 설정 전
<servlet>
    <servlet-name>jsp</servlet-name>
    <servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>
    <init-param>
        <param-name>fork</param-name>
        <param-value>false</param-value>
    </init-param>
    <init-param>
        <param-name>xpoweredBy</param-name>
        <param-value>false</param-value>
    </init-param>
    <load-on-startup>3</load-on-startup>
</servlet>
  • 설정 후
<servlet>
    <servlet-name>jsp</servlet-name>
    <servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>
    <!-- 추가 -->
    <init-param>
        <param-name>compilerSourceVM</param-name>
        <param-value>1.8</param-value>
    </init-param>
    <init-param>
        <param-name>compilerTargetVM</param-name>
        <param-value>1.8</param-value>
    </init-param>

    <init-param>
        <param-name>fork</param-name>
        <param-value>false</param-value>
    </init-param>
    <init-param>
        <param-name>xpoweredBy</param-name>
        <param-value>false</param-value>
    </init-param>
    <load-on-startup>3</load-on-startup>
</servlet>

#tomcat8.5 #compiler #1.8 #lambda #java18

반응형