可以使用任何已安装的Java 7 或更新版本的JRE(32位或64位)。
使用 lambda 表达式、方法引用和流,测试了基于 Java 8 + Spring 4.0.2 编写的 Web 应用程序在 Tomcat 7.0.50 上 - 运行得非常好!
<init-param>
<param-name>compiler</param-name>
<param-value>modern</param-value>
</init-param>
<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>suppressSmap</param-name>
<param-value>true</param-value>
</init-param>
CLASSPATH=$JAVA_HOME/lib/tools.jar:$CLASSPATH
请注意,我还需要将java_home设置为1.8(这有点显而易见,但值得一提)谢谢Chewy,我已经搜索了1个小时来编译jsp中的lambda表达式,现在终于成功了。
只需要更新tomcat的web.xml文件中jsp部分如下(仅需要这样一点更改):
<servlet>
<servlet-name>jsp</servlet-name>
<servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>
<init-param>
<param-name>compiler</param-name>
<param-value>modern</param-value>
</init-param>
<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>suppressSmap</param-name>
<param-value>true</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>
<init-param>
<param-name>mappedfile</param-name>
<param-value>true</param-value>
</init-param>
<load-on-startup>3</load-on-startup>
</servlet>
我在Linux上尝试过,但无法工作。当在JSP页面中执行lambda表达式时,会抛出以下错误:
lambda表达式仅允许在1.8或更高版本的源级别上使用 Apache Tomcat/8.0.14
它在JDK jdk1.8.0_25上运行。
你可以在web.xml文件中初始化编译值,然后就可以使用Tomcat8了。
Tomcat 8支持Servlet 3.1、JSP 2.3和EL 3.0。