2012-03-06 7 views
9

In Linux, è possibile distribuire un'applicazione Web con Java 7 su tomcat6? In tal caso, quale configurazione deve essere modificata per consentirne il funzionamento?Tomcat6 e Java 7

Ho provato a cambiare la variabile JAVA_HOME nel file tomcat6.conf e il riavvio, ma utilizza ancora 1.6 in base alla pagina Web di Tomcat Manager e solo le applicazioni scritte in versione 1.6 o inferiore vengono implementate correttamente.

Ho entrambi jdk 1.6 e 1.7 installati in posizioni diverse.

+1

Non so quale sia il file 'tomcat6.conf', non l'ho mai visto.Potresti voler controllare se c'è uno script batch/shell 'setenv' nella directory' bin' che imposta la variabile JAVA_HOME –

+2

Tomcat 6 non supporta ufficialmente JDK 7 (e si basa su tutte le segnalazioni di errore che dubito vorresti prova a farlo funzionare anche con esso). Compila la tua applicazione con la modalità di compatibilità 1.6 o esegui l'aggiornamento a Tomcat 7. – Perception

risposta

8

Ho avuto un grosso problema quando ho compilato la mia servlet usando Java JDK 1.7.0 , Tomcat non si avvia a causa di un errore di runtime manor.major.

Per rendere Tomcat6 eseguire le vostre classi usando JDK 1.7 effettuare le seguenti operazioni:

  1. Aprire il file /etc/init.d/tomcat6 con privilegi di root.

  2. Troverete una variabile chiamata JDK_DIRS alla linea 83.

  3. Commento fuori aggiungendo # all'inizio della riga.

  4. scriverlo il seguente sotto: JDK_DIRS="/usr/lib/jvm/java-1.7.0-openjdk-i386"

  5. Salva e riavviare Tomcat

3

Ho incontrato problemi simili e sembra che JDK 1.7 non abbia compatibilità con versioni precedenti di Tomcat 6. È necessario distribuirlo a Tomcat 7 o ricompilare utilizzando JDK 1.6.

+3

Mi sembra piuttosto improbabile. Hai qualcosa con cui fare il backup? – skaffman

+2

Tomcat funziona correttamente su 1.6, ma la domanda riguarda la versione utilizzata da tomcat per avviare istanze di servlet. Tomcat 6 non eseguirà un servlet scritto in Java 1.7. – Zero

+0

Questa risposta dovrebbe * non * essere la migliore risposta in quanto può essere fuorviante. Java 7 viene eseguito su Tomcat 6. (Basta prestare attenzione a ciò che @Zero sta dicendo) –

4

Sto solo utilizzando le installazioni Tomcat predefinite senza impostare alcun file di configurazione eccetto lo tomcat-users.xml per l'accesso alla GUI.

Apache Tomcat 6.0.35 e 6.0.16 sono entrambi in esecuzione su JVM 1.7.0_03-b05 (Windows + Linux).

JAVA_HOME deve puntare alla cartella JDK; ad esempio:

C:\Program Files\Java\jdk1.7 (Windows)

o

/usr/lib/jvm/java-6-sun (Ubuntu, questo collegamento punta a installazione JDK)

+0

Il problema non è eseguire Tomcat direttamente usando Java 1.7, va bene. Il problema è, quale versione di tomcat usa per avviare i servlet con. La domanda chiede come ottenere tomcat per utilizzare Java 1.7 per avviare i suoi servlet, non se è possibile avviare tomcat stesso su Java 1.7, che ovviamente funziona correttamente. – Zero

1

ho trovato ha fatto la differenza che Java 7 è stato utilizzato da Tomcat 6.

#JAVA_HOME=/usr/lib/jvm/java-7-openjdk ## Did not work 
JAVA_HOME=/usr/lib/jvm/java-7-oracle ## DID WORK 

Con "Non ha funzionato", intendo specificamente, all'avvio della mia webapp ho ricevuto ClassNotFoundException: java.lang.AutoCloseable. Questa interfaccia è new with Java 7.

Caused by: java.lang.NoClassDefFoundError: java/lang/AutoCloseable 
    at java.lang.ClassLoader.defineClass1(Native Method) 
    at java.lang.ClassLoader.defineClass(ClassLoader.java:751) 
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:144) 
    at org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:2818) 
    at org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:1159) 
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1647) 
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1526) 
    at org.springframework.util.ClassUtils.forName(ClassUtils.java:249) 
    at org.springframework.beans.factory.support.AbstractBeanDefinition.resolveBeanClass(AbstractBeanDefinition.java:395) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.doResolveBeanClass(AbstractBeanFactory.java:1349) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.resolveBeanClass(AbstractBeanFactory.java:1320) 
    ... 47 more 
Caused by: java.lang.ClassNotFoundException: java.lang.AutoCloseable 
     at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1680) 
     at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1526) 
     ... 58 more