2012-03-06 35 views
9

En Linux, ¿es posible tener una aplicación web escrita usando Java 7 para implementarse en tomcat6? Si es así, ¿qué configuración debe modificarse para permitir que funcione?Tomcat6 y Java 7

He intentado cambiar la variable JAVA_HOME en el archivo tomcat6.conf y reiniciar, pero sigue usando 1.6 de acuerdo con la página web del administrador de tomcat, y solo las aplicaciones escritas en 1.6 o inferior se implementan correctamente.

Tengo jdk 1.6 y 1.7 instalados en diferentes ubicaciones.

+1

No estoy seguro de qué se supone que es el archivo 'tomcat6.conf', nunca he visto eso.Es posible que desee comprobar si hay un script 'setenv' batch/shell en el directorio' bin' que establece la variable JAVA_HOME –

+2

Tomcat 6 no admite oficialmente JDK 7 (y en base a todos los informes de error dudo que lo desee) intenta hacer que funcione también con eso). Puede compilar su aplicación con el modo de compatibilidad 1.6 o actualizar a Tomcat 7. – Perception

Respuesta

8

que tenía un problema importante cuando compilé mi servlet utilizando Java JDK 1.7.0 , Tomcat no se iniciará debido a una manor en tiempo de ejecución. Error de versión principal.

Para hacer Tomcat6 ejecutar sus clases utilizando JDK 1.7 haga lo siguiente:

  1. Abrir el archivo /etc/init.d/tomcat6 con privilegios de root.

  2. Encontrará una variable llamada JDK_DIRS en la línea 83.

  3. comentario a cabo mediante la adición de # al principio de la línea.

  4. escribirlo abajo la siguiente: JDK_DIRS="/usr/lib/jvm/java-1.7.0-openjdk-i386"

  5. Guardar y reiniciar Tomcat

3

Me he encontrado con un problema similar y parece que JDK 1.7 no tiene compatibilidad con Tomcat 6. Tienes que implementarlo en Tomcat 7 o recompilar usando JDK 1.6.

+3

Eso me parece poco probable. ¿Tienes algo para respaldar eso? – skaffman

+2

Tomcat funciona bien en 1.6, pero la pregunta es sobre la versión que usa tomcat para iniciar instancias de servlets. El propio Tomcat 6 no ejecutará un servlet escrito en Java 1.7. – Zero

+0

Esta respuesta * no * debe ser la mejor respuesta ya que puede ser engañosa. Java 7 se ejecuta en Tomcat 6. (Solo preste atención a lo que dice @Zero) –

4

Estoy utilizando las instalaciones predeterminadas de Tomcat sin configurar ningún archivo de configuración, excepto el tomcat-users.xml para iniciar sesión en la GUI.

Apache Tomcat 6.0.35 y 6.0.16 se ejecutan cada uno en JVM 1.7.0_03-b05 (Windows + Linux).

JAVA_HOME debe apuntar a la carpeta JDK; por ejemplo:

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

o

/usr/lib/jvm/java-6-sun (Ubuntu, este enlace apunta a la instalación JDK)

+0

El problema no es ejecutar tomcat directamente usando Java 1.7, eso está bien. El problema es qué versión utiliza Tomcat para ejecutar los servlets. La pregunta es cómo conseguir que tomcat utilice Java 1.7 para lanzar sus servlets, no si puede lanzar tomcat en Java 1.7, lo que obviamente funciona bien. – Zero

1

lo encontré hecho una diferencia cuales Java 7 fue utilizado por Tomcat 6.

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

Por "No funcionó", específicamente quiero decir, al arrancar mi aplicación web Obtuve ClassNotFoundException: java.lang.AutoCloseable. Esta interfaz es 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