Tomcatが起動しない原因
掲載日:2021年1月8日
INFOMARTION > Tomcatが起動しない原因
概要
Tomcatが起動しない原因と対処方法についてです。startup.batやstartup.shを実行しても、なぜかTomcatが起動せず、エラーとなってしまう場合の原因と対処方法となります。Tomcatのバージョン「9.0.27」を元に説明したいと思います。
目次
- Tomcatが起動しない原因
- 1-1. JAVA_HOMEが設定されていない
- 1-2. JAVAのバージョンがTomcatに対応していない
- 1-3. JRE_HOMEが有効となっている
- 1-4. ポート番号が競合している
- まとめ
1. Tomcatが起動しない原因
Tomcatが起動しない原因は様々ありますが、主なTomcatが起動しない原因となる事象についてです。
1-1. JAVA_HOMEが設定されていない
【原因】
JAVA_HOME、もしくは、JRE_HOMEが設定されていない場合は以下のエラーが出力されます。
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
【対処方法】
JAVA_HOME、もしくは、JRE_HOMEを「システムのプロパティ⇒詳細設定⇒環境変数」から設定しましょう。正しく設定できるとコマンドプロンプトで「echo %JAVA_HOME%」「echo %JRE_HOME%」などと打つと以下の様に出力されます。注意点として環境変数を変更した場合はコマンドプロンプトを再起動してください。コマンドプロンプトを起動時に環境変数は読み込まれます。
C:\Users\user>echo %JAVA_HOME%
C:\Program Files (x86)\Java\jdk-11
1-2. JAVAのバージョンがTomcatに対応していない
【原因】
TomcatはサポートしているJavaのバージョンがあります。以下のTomcatのサイトに記載されています。
https://tomcat.apache.org/whichversion.html
例えばTomcatのバージョン「9.0.27」の場合、上記サイトの「Apache Tomcat Version」の「9.0.x」となるので、「8 and later」となります。
つまりJava8以降を設定すると動作します。
【対処方法】
以下のTomcatのサイトを元に対応するJavaに環境変数を書き換えます。
https://tomcat.apache.org/whichversion.html
1-3. JRE_HOMEが有効となっている
【原因】
Tomcatは「JRE_HOME」「JAVA_HOME」が設定されている場合は「JRE_HOME」の方が有効となります。「JAVA_HOME」を見てTomcatに対応するJavaとなっていても「JRE_HOME」の方が動くので「JRE_HOME」の方がTomcatに対応するJavaとなっていないといけません。
【対処方法】
「システムのプロパティ⇒詳細設定⇒環境変数」からJRE_HOMEのJavaをTomcatに対応するJavaに書き換えます。
1-4. ポート番号が競合している
【原因】
Tomcatはデフォルトで8080ポートで起動します。他に8080ポートで起動しているアプリがあると以下の様なエラーが出力されます。
重大 [main] org.apache.catalina.util.LifecycleBase.handleSubClassException コンポーネント[Connector[HTTP/1.1-8080]] の初期化に失敗しました。
【対処方法】
Tomcatのポート変更、もしくは、競合して起動しているポート番号のアプリを停止する。
以下のコマンドを実行するとポート番号が競合しているか分かります。"8080"の部分は自身の環境に合わせてください。何も設定を変えていない場合は8080となります。何も起動されていない場合は、何もレスポンスが返ってこないです。
※以下のコマンドは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. まとめ
Tomcatが起動しない場合は以下の4点を確認してみてください。
- JAVA_HOMEが設定されていない
- JAVAのバージョンがTomcatに対応していない
- JRE_HOMEが有効となっている
- ポート番号が競合している
それでもダメな場合は、そもそものTomcatの起動の仕組みについて、以下の記事に記載しているので参考にしてみてください。
最後までご覧いただきありがとうございました。