Tomcat se ne zažene? Praktičen kontrolni seznam za odpravljanje težav


Datum objave:

Posodobljeno:


Tehnični članki > Tomcat se ne zažene? Praktičen kontrolni seznam za odpravljanje težav

Stanje in varna uporaba v letu 2026

Bistvo: Pred spreminjanjem konfiguracije poiščite prvo izjemo, ki razkrije vzrok, v dnevnikih Tomcata in upravitelja storitev. Nato preverite združljivost Jave, zasedenost vrat, dovoljenja datotek, sintakso XML, prostor na disku in dejanski CATALINA_BASE.

Kaj boste izvedeli

  • Ponovljiv vrstni red preverjanja stanja storitve, dnevnikov, okolja in priključkov.
  • Kako napake pri zagonu JVM razlikovati od napak v konfiguraciji Tomcata ali aplikacije.
  • Zakaj lahko brisanje delovnih imenikov ali povečevanje pomnilnika brez dokazov prikrije pravi vzrok.

Komu je članek namenjen? Razvijalcem in skrbnikom, ki odpravljajo težave s Tomcatom, ko se proces ustavi ali ne začne poslušati na nastavljenih vratih.

Opomba za leto 2026: Prvotni primeri so še vedno uporabni diagnostični vzorci, vendar so mesta datotek in podprte različice Jave odvisni od nameščene družine Tomcat in načina pakiranja. Starih možnosti JVM ne uporabite znova brez preverjanja aktualne dokumentacije Jave.

Varnostna opomba: Ukazi in konfiguracijski primeri iz prvotnega članka niso bili znova preizkušeni v sodobnem produkcijskem okolju. Pred uporabo v ločenem preizkusnem okolju preverite podprte različice, izdelajte varnostne kopije ter določite nadzor dostopa in postopek povrnitve.

Uradni viri

Pregled

V nadaljevanju so na primeru Tomcata 9.0.27 opisani pogosti vzroki, zaradi katerih se Tomcat kljub izvedeni skripti startup.bat ali startup.sh ne zažene, ter ustrezni postopki preverjanja.

Kazalo vsebine

  1. Vzroki, zaradi katerih se Tomcat ne zažene
  2. Povzetek

1. Vzroki, zaradi katerih se Tomcat ne zažene

Vzrokov je lahko več; v tem razdelku so zbrani štirje pogosti primeri.

1-1. JAVA_HOME ali JRE_HOME ni nastavljen

(Vzrok)

Če nista nastavljena niti JAVA_HOME niti JRE_HOME, se izpiše naslednja napaka.

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

(Rešitev)

JAVA_HOME ali JRE_HOME nastavite v razdelku »Sistemske lastnosti, Dodatne nastavitve, Okoljske spremenljivke«. Pravilnost preverite z ukazoma "echo %JAVA_HOME%" in "echo %JRE_HOME%". Po spremembi odprite nov ukazni poziv, saj se okoljske spremenljivke preberejo ob njegovem zagonu.

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

1-2. Različica Jave ni združljiva s Tomcatom

(Vzrok)

Vsaka družina Tomcata zahteva določeno najmanjšo različico Jave. Zahteve so objavljene na naslednji uradni strani.

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

Tomcat 9.0.27 je zahteval najmanj Javo 8, vendar to ne pomeni, da je ta stara popravljalna izdaja združljiva z vsako novejšo različico Jave.

Pri novejših izdajah vedno upoštevajte trenutno matriko združljivosti.

(Rešitev)

JAVA_HOME oziroma JRE_HOME nastavite na različico Jave, ki je skladna z uradno matriko Tomcata.

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

1-3. Prednost ima JRE_HOME

(Vzrok)

Če sta nastavljena JRE_HOME in JAVA_HOME, lahko zagonska skripta uporabi JRE_HOME. Zato zgolj pravilna vrednost JAVA_HOME ne zadošča; tudi JRE_HOME mora kazati na združljivo Javo.

(Rešitev)

V okoljskih spremenljivkah popravite JRE_HOME tako, da kaže na Javo, združljivo z nameščeno različico Tomcata, ali ga odstranite, če ga ne potrebujete.

1-4. Vrata so že zasedena

(Vzrok)

Tomcat se privzeto zažene na vratih 8080. Če na vratih 8080 tečejo druge aplikacije, se izpiše naslednja napaka.

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

(Rešitev)

Spremenite vrata Tomcatovega povezovalnika ali ustavite proces, ki jih že uporablja.

Naslednji ukaz pokaže, ali so vrata zasedena. Vrednost "8080" prilagodite svojemu okolju; pri nespremenjeni privzeti nastavitvi uporabite 8080. Prazen izpis pomeni, da na teh vratih ni poslušalca.

Opomba: naslednji ukazi so namenjeni sistemu 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. Povzetek

Če se Tomcat ne zažene, preverite naslednje štiri točke.

  • vrednost JAVA_HOME oziroma JRE_HOME ni nastavljena ali ni pravilna;
  • različica Jave ni združljiva s Tomcatom;
  • JRE_HOME preglasi pravilni JAVA_HOME;
  • nastavljena vrata so že zasedena.

Če ti pregledi ne odkrijejo vzroka, si oglejte še potek zagona v naslednjem članku.

Kako se zažene Apache Tomcat: zagonske skripte, Bootstrap in Catalina

Pri uporabi v novejšem okolju upoštevajte tudi opombe o različicah in varnosti na začetku članka.