Подтвердить что ты не робот

Поддерживает ли Tomcat 8 Java 8?

Это tomcat 8 (сегодня как RC1 - см. this), поддерживающий Java 8, даже если он все еще находится в бета-версии?

Среди прочих Tomcat 8 поддерживает Java EE 7:

  • Веб-узлы
  • Servlet api 3.1 (поддержка сервлета Asynch)

У меня были проблемы с с Tomcat 7/Java 7, поэтому я задаю этот вопрос.


Обновление

Интересная статья о infoq указывает, что tomcat 8 готов для java 8. Даже Tomcat 7 будет.

См. статью здесь


Если вы видите какую-либо проблему совместимости, я сообщу об этом здесь.

4b9b3361

Ответ 1

В соответствии с Tomcat Docs:

Может использоваться любая установленная Java 7 или более поздняя версия JRE (32-разрядная или 64-разрядная версия).

Ответ 2

Протестированный Tomcat 7.0.50 с веб-приложением, написанным на Java 8 + Spring 4.0.2, с использованием лямбда-выражений, ссылок на методы и потоков - работает как шарм!

Ответ 3

Он не поддерживается из коробки. Вы должны внести некоторые изменения. в 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) следующую запись: экспорт CLASSPATH=$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/%[email protected]d04.prod.outlook.com%3E

Ответ 4

Tomcat 8.0 предназначен для работы на Java 7. Для справки поддерживаются следующие спецификации:

  • Tomcat 6: Servlet 2.5, JSP 2.1 и EL 2.1.
  • Tomcat 7: Servlet 3.0, JSP 2.2 и EL 2.2.
  • Tomcat 8: сервлет 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

Ответ 5

Я пробовал Linux, и он не работает. Когда дело доходит до выполнения лямбда-выражения на странице JSP, возникает следующая ошибка

Лямбда-выражения допускаются только на уровне источника 1,8 или выше Apache Tomcat/8.0.14

работает на JDK jdk1.8.0_25

Ответ 6

Спасибо Chewy, я искал последние 1 час для компиляции lambdas внутри jsp, это сработало для меня.

Обновлен раздел jsp в tomcat web.xml следующим образом (требуется только такое изменение):

<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>

Ответ 7

вы можете инициализировать значение компиляции внутри web..xml то вы можете использовать Tomcat8.

Tomcat 8: сервлет 3.1, JSP 2.3 и EL 3.0.