Tomcat 8 prend-il en charge Java 8?


Tomcat 8 (aujourd'hui sous le nom de RC1 - voir this) prend-il en charge Java 8, même s'il est toujours en version bêta?

Entre autres Tomcat 8 prend en charge Java EE 7:

  • Websockets
  • Api de servlet 3.1 (prise en charge des servlets asynchrones)

J'ai eu des problèmes dans le passé avec Tomcat 7 / Java 7, c'est pourquoi je pose cette question.


Mise à Jour

Un article intéressant sur infoq indique que tomcat 8 est prêt pour java 8. Même Tomcat 7 le ferait être.

Voir l'article ici


Si vous voyez un problème de compatibilité, je le signalerai ici.

Author: Community, 2013-08-13

7 answers

Selon le Tomcat Docs:

Tout JRE Java 7 ou ultérieur installé (32 bits ou 64 bits) peut être utilisé.

 33
Author: Deividi Cavarzan, 2013-11-05 21:13:51

Testé Tomcat 7.0.50 avec une application Web écrite sur Java 8 + Spring 4.0.2, en utilisant des expressions lambda, des références de méthodes et des flux - fonctionne comme un charme!

 10
Author: Denis Makarskiy, 2014-03-25 17:07:39

Il ne prend pas en charge la sortie de la boîte. Vous devez faire quelques changements. dans apache home\conf\web.xml ajoutez les lignes suivantes dans la section 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>

J'ai également ajouté à mon chemin de classe dans setenv.sh (ou bat) l'entrée suivante: exporter CLASSPATH=$JAVA_HOME/lib/tools.jar:$CLASSPATH

Notez que j'ai également besoin de java_home défini sur 1.8 (un peu de duh ici, mais peut valoir la peine d'être mentionné)

En voici quelques-uns source: 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

 5
Author: Chewy, 2015-03-20 15:33:59

Tomcat 8.0 est conçu pour fonctionner sur Java 7. Pour référence, les spécifications suivantes ont été prises en charge:

  1. Tomcat 6: Servlet 2.5, JSP 2.1 et EL 2.1.
  2. Tomcat 7: Servlet 3.0, JSP 2.2 et EL 2.2.
  3. Tomcat 8: Servlet 3.1, JSP 2.3 et EL 3.0. En outre, il existe un support pour une nouvelle spécification, Java WebSocket 1.0.

Voir plus à: http://blog.gopivotal.com/products/apache-tomcat-8-what-it-is-what-you-need-to-know#sthash.nVw8CTJ9.dpuf

 3
Author: Raja Asthana, 2014-02-03 10:24:10

J'ai essayé sur Linux et cela ne fonctionne pas. Quand il s'agit d'exécuter une expression lambda dans la page JSP, l'erreur suivante est levée

Les expressions Lambda ne sont autorisées qu'au niveau source 1.8 ou supérieur Apache Tomcat / 8.0.14

Il fonctionne sur JDK jdk1.8. 0_25

 2
Author: Stan Sokolov, 2014-11-12 20:29:48

Merci Chewy, je cherchais la dernière heure 1 pour compiler des lambdas dans jsp cela a fonctionné pour moi.

Mise à jour de la section jsp dans le web de tomcat.xml comme suit (seul ce changement était nécessaire):

<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>
 2
Author: Shubhra Sinha, 2016-10-13 12:17:48

Vous pouvez initialiser la valeur de compilation dans web..XML ensuite, vous pouvez utiliser Tomcat8.

Tomcat 8: Servlet 3.1, JSP 2.3 et EL 3.0.

 0
Author: Ankit, 2015-12-02 09:57:51