tomcat 8(今天为 RC1 - 见此)是否支持 Java 8,即使它仍处于测试阶段?
其中 Tomcat 8 支持 Java EE 7:
- 网络套接字
- Servlet api 3.1(异步 servlet 支持)
我过去在使用 Tomcat 7 / Java 7 时遇到了麻烦,这就是我问这个问题的原因。
更新
infoq 上的一篇有趣的文章表明,tomcat 8 已经为 java 8 做好了准备。甚至 Tomcat 7 也可以。
请参阅此处的文章
如果您发现任何兼容性问题,我将在此处报告。
根据Tomcat Docs:
可以使用任何已安装的 Java 7 或更高版本的 JRE(32 位或 64 位)。
使用 lambda 表达式、方法引用和流,使用 Java 8 + Spring 4.0.2 编写的 Web 应用程序测试了 Tomcat 7.0.50 - 就像一个魅力!
它不支持开箱即用。你必须做出一些改变。在 apache home\conf\web.xml 的 jsp 部分中添加以下行。
<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>
我还在 setenv.sh(或 bat)中的类路径中添加了以下条目:exportCLASSPATH=$JAVA_HOME/lib/tools.jar:$CLASSPATH
请注意,我还需要将 java_home 设置为 1.8(这里有点废话,但可能值得一提)
以下是一些来源:http: //tomcat.apache.org/tomcat-8.0-doc/jasper-howto.html http://mail-archives.apache.org/mod_mbox/tomcat-dev/201301.mbox/%3C7CF0788AAB53854AB15567D68F41960238297F32 @CH1PRD0410MB369.namprd04.prod.outlook.com%3E
Tomcat 8.0 设计为在 Java 7 上运行。作为参考,已支持以下规范:
查看更多信息:http: //blog.gopivotal.com/products/apache-tomcat-8-what-it-is-what-you-need-to-know#sthash.nVw8CTJ9.dpuf
I have tried on Linux and it does not work. When it comes to executing a lambda expression in JSP page the following error is thrown
Lambda expressions are allowed only at source level 1.8 or above Apache Tomcat/8.0.14
it runs on JDK jdk1.8.0_25
感谢 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>
您可以在 web..xml 中初始化编译值,然后您就可以使用 Tomcat8。
Tomcat 8:Servlet 3.1、JSP 2.3 和 EL 3.0。