2010-04-02 43 views
5

estoy un poco desconcertado por este comportamiento extraño en CentOS 5.4 al iniciar Tomcat 6.0 como un servicioTomcat startup.sh encontrando JAVA_HOME

¡Tengo una secuencia de comandos en /etc/init.d/tomcat que puede iniciar/detener/reiniciar Apache Tomcat 6.0 con el usuario 'tomcat', y lo registró como servicio. El problema con el servicio es que obtengo una 'Ni JAVA_HOME ni la variable de entorno JRE_HOME está definida'. Pero cuando escribe 'sudo -u tomcat echo $ JAVA_HOME' obtengo '/usr/java/jdk1.5.0_22' que es correcto ya que estoy usando ese JDK. ¿Qué puedo hacer sobre esto?

Respuesta

2

¿Ha intentado forzar la variable de entorno JAVA_HOME en el script de inicio? Cada vez que enfrento un problema como este encuentro que es una buena técnica de solución de problemas para tratar de localizar dónde está perdiendo esta información al configurarla en los propios guiones.

+0

Sí. Cuando inserte la exportación JAVA_HOME =/usr/java/jdk1.5.0_22 directamente en $ CATALINA_HOME/bin/startup.sh, entonces no hay problema. –

+0

recuerde insertar esto al principio de la secuencia de comandos, en lugar de al final de la misma. – eaykin

0

¿Ha comprobado las rutas en /etc/profile.d/java.sh?

También intente comprobar qué versión de Java que regresar con: java, que

esto debe devolver las rutas exactas en java.sh si no se tiene una mala configuración. en el último caso desinstalar todo java y reinstalar la última jdk.

De todos modos esta publicación es útil en sus favoritos para referencia futura.

http://www.centos.org/modules/newbb/viewtopic.php?topic_id=5717&forum=28

+0

No tengo un /etc/profile.d/java.sh. No crea que el JDK instalado desde rpm crea uno En la versión java de todos los usuarios devuelve: versión java "1.5.0_22 " Java (TM) 2 Runtime Environment, Standard Edition (compilación 1.5.0_22-b03) Java HotSpot (TM) Client VM (compilación 1.5.0_22-b03, modo mixto, uso compartido) –

+0

También 'echo $ JAVA_HOME' return /usr/java/jdk1.5.0_22 –

10

que tenían el mismo problema y lo resolvió mediante la colocación de la variable JAVA_HOME definición en el archivo /etc/environment.

Inicialmente yo había creado la variable JAVA_HOME entorno de invocación:

$ export JAVA_HOME=<path_to_my_java_home> 

Entonces me di cuenta de Tomcat startup.sh guión no podía acceder al valor de la variable JAVA_HOME cuando se invoca con sudo, que es necesario para iniciar el servidor Tomcat .

Primero probé exportar la variable JAVA_HOME con sudo, pero no funcionó:

$ sudo export JAVA_HOME=<path_to_my_java_home> 
sudo: export: command not found 

Luego he intentado añadir la definición JAVA_HOME variable para /etc/environment archivo. Así es como mi archivo /etc/enviroment ve ahora:

PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games" 
JAVA_HOME=/usr/lib/jvm/java-7-oracle 

A continuación, después de invocar Tomcat startup.sh guión con sudo y acceder a la http://localhost:8080 brownser trae la página de inicio de Tomcat, que establece que el servidor está configurado correctamente.

+0

No tengo idea de en qué parte del inicio de daemons se llama este archivo, pero lo hace. Esto me impide tener que poner el valor JAVA_HOME en todos y cada uno de los servicios (en Linux)/etc/default/$ application file. – Dennis

0

En bin/catalina.sh sólo tiene que añadir JAVA_HOME para crontab como

# For CRONTAB 
export JAVA_HOME=/usr/java/latest 
# END