Как изменить компилятор tomcat
Я пытаюсь использовать новую функцию перехода на Java 7.
Но Tomcat не сотрудничает.
Я убедился, что tomcat работает под java 7, но кажется, что он не компилируется под ним.
Я добавил следующее в файл web.xml в записи сервлета jsp
<init-param>
<param-name>compiler</param-name>
<param-value>C:/Program Files/Java/jdk1.7.0/bin/javac.exe</param-value>
</init-param>
но, похоже, это не трюк.
Любые советы будут оценены.
Ответы
Ответ 1
Мы работаем с Tomcat 6 и имеем ту же проблему. Наше решение заключалось в следующем:
- замените
tomcat/lib/ecj-3.3.1.jar
на ecj-3.7.2.jar
(можно взять из последней версии Tomcat 7);
-
добавьте это в tomcat/conf/web.xml
...
<servlet>
<servlet-name>jsp</servlet-name>
<servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>
<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> <!-- this should be added -->
<param-name>compilerSourceVM</param-name>
<param-value>1.7</param-value>
</init-param>
<init-param>
<param-name>compilerTargetVM</param-name>
<param-value>1.7</param-value>
</init-param> <!-- last added line -->
<load-on-startup>3</load-on-startup>
</servlet>
Более простой альтернативой, конечно же, является установка Tomcat 7, но это может быть не вариант для всех.
Ответ 2
Ваше смешение здесь. Вы хотите, чтобы ваши JSPs компилировались с помощью Java 7 и не выполняли tomcat с Java 7. Tomcat использует компилятор Java Eclipse, который еще не поддерживает Java 7.
Редактирование: я сделал рытье. Как вы видите здесь, используется встроенный компилятор Eclipse. Компилятор, распространенный с Tomcat 7.0.19, является ECJ 3.7, который будет поддерживать Java 7 не раньше 3.7.1.
Ответ 3
В соответствии с используемой версией Tomcat механизм JSP, предоставленный tomcat, использует определенную версию Java по умолчанию для компиляции и запуска JSP.
Tomcat 7 использует версию 1.6
compilerSourceVM - Какая версия JDK совместима с исходными файлами с? (Значение по умолчанию: 1.6)
compilerTargetVM - Какая версия JDK - это сгенерированные файлы, совместимые с? (Значение по умолчанию: 1.6)
Tomcat 8 использует версию 1.7
compilerSourceVM - Какая версия JDK совместима с исходными файлами с? (Значение по умолчанию: 1.7)
compilerTargetVM - Какая версия JDK - это сгенерированные файлы, совместимые с? (Значение по умолчанию: 1.7)
Tomcat 9 использует версию 1.8
compilerSourceVM - Какая версия JDK совместима с исходными файлами с? (Значение по умолчанию: 1,8)
compilerTargetVM - Какая версия JDK - это сгенерированные файлы, совместимые с? (Значение по умолчанию: 1,8)
Конечно, вы можете изменить используемые версии, если значения по умолчанию не соответствуют вашим требованиям.
Это можно сделать, изменив параметры init
org.apache.jasper.servlet.JspServlet
объявлен сервлет
в вашем глобальном $CATALINA_BASE/conf/web.xml
.
Например, web.xml
дистрибутива tomcat 8 определил JspServlet следующим образом:
<servlet>
<servlet-name>jsp</servlet-name>
<servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>
<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>
<load-on-startup>3</load-on-startup>
</servlet>
...
Например, чтобы указать версию 1.8
как источник и цель для JSP файлов, вы должны изменить ее следующим образом:
...
<servlet>
<servlet-name>jsp</servlet-name>
<servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>
<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>
<!-- added params -->
<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>
<!-- end added params -->
<load-on-startup>3</load-on-startup>
</servlet>
...
Ответ 4
Вы пытались настроить compilerSourceVM на 1.7 или 7? (Боюсь, я не могу утверждать, что это работает или нет)