Causas de que Tomcat no se inicie


Fecha de publicación:8 de enero de 2021.



INFOMARTION > Causas de que Tomcat no se inicie

Resumen.

Esta sección describe las causas de que Tomcat no se inicie y cómo solucionarlas. Esta es la causa y el remedio para los casos en que Tomcat no se inicia por alguna razón y se produce un error aunque se ejecute startup.bat o startup.sh. Me gustaría explicar esto basándome en la versión de Tomcat '9.0.27'.

Índice de contenidos

  1. Causas de que Tomcat no se inicie
  2. resumen

1. Causas de que Tomcat no se inicie

Hay varias causas de que Tomcat no se inicie, pero esta sección describe los principales eventos que pueden hacer que Tomcat no se inicie.

1-1. JAVA_HOME no está configurado.

【causa】

Si no se establece ni JAVA_HOME ni JRE_HOME, se produce el siguiente error.

startup.bat


C:\Users\user>C:\apache-tomcat-9.0.27\bin\startup.bat
The JRE_HOME environment variable is not defined correctly
This environment variable is needed to run this program

【Cómo afrontarlo】

Establezca JAVA_HOME o JRE_HOME desde 'Propiedades del sistema, Configuración avanzada, Variables de entorno'. Si se configura correctamente, al escribir "echo %JAVA_HOME%", "echo %JRE_HOME%", etc. en la línea de comandos se producirá la siguiente salida. Como precaución, reinicie el símbolo del sistema si cambia las variables de entorno. Las variables de entorno se leen cuando se inicia el símbolo del sistema.

C:\Users\user>echo %JAVA_HOME%
C:\Program Files (x86)\Java\jdk-11

1-2. La versión de JAVA no es compatible con Tomcat.

【causa】

Tomcat tiene una versión de Java compatible. Se puede encontrar en la siguiente página web de Tomcat.

https://tomcat.apache.org/whichversion.html

Por ejemplo, la versión de Tomcat "9.0.27" sería "9.0.x" de la "Versión de Apache Tomcat" en el sitio anterior, que es "8 y posterior".

Esto significa que la configuración de Java 8 o posterior funcionará.

【Cómo afrontarlo】

Reescriba las variables de entorno a las correspondientes de Java basadas en el siguiente sitio web de Tomcat.

https://tomcat.apache.org/whichversion.html

1-3. JRE_HOME está activado.

【causa】

Tomcat es válido para "JRE_HOME" si "JRE_HOME" y "JAVA_HOME" están configurados. Incluso si miras "JAVA_HOME" y ves que Java es compatible con Tomcat, "JRE_HOME" funcionará, así que "JRE_HOME" debe ser Java compatible con Tomcat.

【Cómo afrontarlo】

Desde 'Propiedades del Sistema, Configuración Avanzada, Variables de Entorno', reescribe Java en JRE_HOME al Java correspondiente a Tomcat.

1-4. Números de puerto conflictivos.

【causa】

Tomcat se inicia en el puerto 8080 por defecto. Si hay otras aplicaciones que se ejecutan en el puerto 8080, se produce el siguiente error.

Critical [main] org.apache.catalina.util.LifecycleBase.handleSubClassException Failed to initialize component [Connector[HTTP/1.1-8080]]

【Cómo afrontarlo】

Cambie el puerto de Tomcat o detenga las aplicaciones con números de puerto conflictivos que se estén ejecutando.

El siguiente comando le dirá si hay un conflicto de números de puerto. La parte "8080" debe adaptarse a su propio entorno. Si no se ha modificado ninguna configuración, el valor es 8080. Si no se activa nada, no se devuelve ninguna respuesta.

※Los siguientes comandos son de Windows.

C:\Users\user>netstat -nao | find "8080"
  TCP         0.0.0.0:8080           0.0.0.0:0              LISTENING       5748
  TCP         [::]:8080              [::]:0                 LISTENING       5748
  TCP         [::1]:8080             [::1]:58259            TIME_WAIT       0
  TCP         [::1]:8080             [::1]:58260            TIME_WAIT       0
  TCP         [::1]:8080             [::1]:58261            TIME_WAIT       0

2. resumen

Si Tomcat no se inicia, compruebe los cuatro puntos siguientes.

  • JAVA_HOME no está configurado.
  • La versión de JAVA no es compatible con Tomcat.
  • JRE_HOME está activado.
  • Números de puerto conflictivos.

Si eso no funciona, consulte el siguiente artículo sobre cómo se inicia Tomcat en primer lugar.

¿Cómo se activa Tomcat?

Gracias por mirar hasta el final.