31

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 也可以。

请参阅此处的文章


如果您发现任何兼容性问题,我将在此处报告。

4

7 回答 7

33

根据Tomcat Docs

可以使用任何已安装的 Java 7 或更高版本的 JRE(32 位或 64 位)。

于 2013-08-13T12:18:47.523 回答
10

使用 lambda 表达式、方法引用和流,使用 Java 8 + Spring 4.0.2 编写的 Web 应用程序测试了 Tomcat 7.0.50 - 就像一个魅力!

于 2014-03-25T17:07:39.320 回答
5

它不支持开箱即用。你必须做出一些改变。在 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

于 2015-03-20T15:33:59.907 回答
3

Tomcat 8.0 设计为在 Java 7 上运行。作为参考,已支持以下规范:

  1. Tomcat 6:Servlet 2.5、JSP 2.1 和 EL 2.1。
  2. Tomcat 7:Servlet 3.0、JSP 2.2 和 EL 2.2。
  3. Tomcat 8:Servlet 3.1、JSP 2.3 和 EL 3.0。此外,还支持新规范 Java WebSocket 1.0。

查看更多信息:http: //blog.gopivotal.com/products/apache-tomcat-8-what-it-is-what-you-need-to-know#sthash.nVw8CTJ9.dpuf

于 2014-02-03T10:24:10.027 回答
2

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

于 2014-11-12T20:29:48.390 回答
2

感谢 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>
于 2016-10-13T12:17:48.390 回答
0

您可以在 web..xml 中初始化编译值,然后您就可以使用 Tomcat8。

Tomcat 8:Servlet 3.1、JSP 2.3 和 EL 3.0。

于 2015-12-02T09:57:51.390 回答