2011-07-21 12 views
14

Próbuję użyć nowego przełącznika Java 7 na ciągi znaków.Jak zmienić kompilator tomcat

Ale Tomcat nie współpracuje.

Upewniłem się, że tomcat działa pod java 7, ale wygląda na to, że nie kompiluje się pod nim.

Dodałem następujące do pliku web.xml, pod wpisem JSP serwletu

<init-param> 
     <param-name>compiler</param-name> 
     <param-value>C:/Program Files/Java/jdk1.7.0/bin/javac.exe</param-value> 
    </init-param> 

ale nie wydaje się, by rade.

Wszelkie wskazówki są mile widziane.

Odpowiedz

11

Używamy Tomcat 6 i mieliśmy ten sam problem. Nasze rozwiązanie było:

  • zastąpić tomcat/lib/ecj-3.3.1.jar z ecj-3.7.2.jar (można wziąć z najnowszym wydaniu Tomcat 7);
  • dodać do 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> 
    

Im prostsza alternatywa jest, oczywiście, aby zainstalować Tomcat 7, ale to może nie być rozwiązaniem dla każdego.

+0

Awesome. W końcu udało nam się uaktualnić do Tomcat 7, ale z pewnością wygląda na to, że twoje rozwiązanie wystarczyłoby. –

+0

Możesz również dodać to do 'web.inf' aplikacji. –

-1

Czy próbowałeś ustawić compilerSourceVM na 1.7 lub 7? (Obawiam się, że nie mogę twierdzić, że wiem, czy to działa, czy nie).

+0

Joel, dzięki za odpowiedź, ale to nie działa :( ustawić zarówno compilerSourceVM i compilerTargetVM, próbował z 1,7 i 7 i mam ten sam rezultat –

0

Twoje mieszanie czegoś tutaj. Chcesz, aby Twoje strony JSP kompilowały się z językiem Java 7 i nie uruchamiały tomcat z Javą 7. Tomcat używa Eclipse Java Compiler, który nie ma jeszcze obsługi Java 7.

Edytuj: Zrobiłem trochę kopania. Jak widać here, używany jest wbudowany kompilator Eclipse. Kompilator dystrybuowany z Tomcat 7.0.19 to ECJ 3.7, który będzie obsługiwał środowisko Java 7 nie wcześniej niż 3.7.1.

+0

Michael-O. Próbuję uzyskać * wszystko * do uruchomienia/kompilacji w Javie 7. Mam już Tomcat na 7, po prostu brakuje mi możliwości kompilacji. Właśnie dlatego szukam sposobu na odejście od domyślnego kompilatora. –

+0

Powinieneś raczej skontaktować się z listą mailową użytkowników tomcat. Mark Thomas jest naprawdę aktywny na tym. –

0

Zgodnie z wersją Tomcat, silnik JSP dostarczany przez tomcat używa określonej domyślnej wersji Java do kompilowania i uruchamiania JSP.

Tomcat 7 używa wersji 1.6

compilerSourceVM - jaka wersja JDK są źródłem pliki kompatybilne z ? (Wartość domyślna: 1.6)

compilerTargetVM - Która wersja JDK jest zgodna z wygenerowanymi plikami z? (Wartość domyślna: 1,6)

Tomcat 8 używa wersji 1.7

compilerSourceVM - jaka wersja JDK są źródłem pliki kompatybilne z ? (Wartość domyślna: 1,7)

compilerTargetVM - Która wersja JDK jest zgodna z wygenerowanymi plikami z? (Wartość domyślna: 1.7)

Tomcat 9 używa wersji 1.8

compilerSourceVM - Jaka wersja JDK są źródłem pliki kompatybilne z ? (Wartość domyślna: 1.8)

compilerTargetVM - Która wersja JDK jest zgodna z wygenerowanymi plikami z? (Wartość domyślna: 1,8)

Oczywiście można zmienić używane wersje, jeśli wartości domyślne nie są zgodne z wymaganiami.

Można to zrobić poprzez modyfikację parametrów startowych na org.apache.jasper.servlet.JspServlet serwletu deklarowanej w globalnej $CATALINA_BASE/conf/web.xml.

Na przykład web.xml rozkładu kocur 8 zdefiniował JspServlet w ten sposób:

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

Na przykład, aby określić wersję 1.8 zarówno jako źródło i cel dla plików JSP, należy zmienić go w ten sposób:

... 
<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> 
... 
Powiązane problemy