TomcatがサポートするJavaのバージョンについて
現在EOLになっていないTomcatメジャーバージョンは9.0.x、10.1.x、11.0.xの3つで、それぞれ公式にサポートするJavaバージョンは以下となってます。(2025/12/24時点)
| Tomcatバージョン | 対応するJavaバージョン |
|---|---|
| 9.0.x | 8以降 |
| 10.1.x | 11以降 |
| 11.0.x | 17以降 |
ソース:https://tomcat.apache.org/whichversion.html
上記を見た限りTomcat9でJava8のアプリを動かせるように見えますが、Amazon Linux 2023(AL2023)で実際に動かしてみたところ、JSPがうまく動作しないことが判明しました。
Java8のアプリをAL2023のTomcat9上で動かす
OSはAL2023を使用します。
[ssm-user@AL2023 bin]$ cat /etc/os-release NAME="Amazon Linux" VERSION="2023" ID="amzn" ID_LIKE="fedora" VERSION_ID="2023" PLATFORM_ID="platform:al2023" PRETTY_NAME="Amazon Linux 2023.9.20251117" ANSI_COLOR="0;33" CPE_NAME="cpe:2.3:o:amazon:amazon_linux:2023" HOME_URL="https://aws.amazon.com/linux/amazon-linux-2023/" DOCUMENTATION_URL="https://docs.aws.amazon.com/linux/" SUPPORT_URL="https://aws.amazon.com/premiumsupport/" BUG_REPORT_URL="https://github.com/amazonlinux/amazon-linux-2023" VENDOR_NAME="AWS" VENDOR_URL="https://aws.amazon.com/" SUPPORT_END="2029-06-30"
TomcatとJavaをインストールします。取得元はAL2023のデフォルトレポジトリー(amazonlinux)です。
[root@AL2023 bin]# dnf install tomcat9 [root@ip-10-0-101-215 bin]# dnf install tomcat9 Last metadata expiration check: 0:02:55 ago on Thu Dec 18 10:34:29 2025. Dependencies resolved. ================================================================================================================================================================================================================================================================================ Package Architecture Version Repository Size ================================================================================================================================================================================================================================================================================ Installing: tomcat9 noarch 1:9.0.111-1.amzn2023.0.1 amazonlinux 92 k Installing dependencies: ecj noarch 1:4.23-1.amzn2023.0.4 amazonlinux 2.4 M java-17-amazon-corretto-headless x86_64 1:17.0.17+10-1.amzn2023.1 amazonlinux 91 M javapackages-tools noarch 6.0.0-7.amzn2023.0.6 amazonlinux 25 k tomcat9-el-3.0-api noarch 1:9.0.111-1.amzn2023.0.1 amazonlinux 105 k tomcat9-jsp-2.3-api noarch 1:9.0.111-1.amzn2023.0.1 amazonlinux 72 k tomcat9-lib noarch 1:9.0.111-1.amzn2023.0.1 amazonlinux 6.2 M tomcat9-servlet-4.0-api noarch 1:9.0.111-1.amzn2023.0.1 amazonlinux 285 k Installing weak dependencies: tomcat-native x86_64 2.0.8-4.amzn2023.0.1 amazonlinux 47 k Transaction Summary ================================================================================================================================================================================================================================================================================ Install 9 Packages (アウトプット割愛) [root@AL2023 bin]# dnf install java-1.8.0-amazon-corretto java-1.8.0-amazon-corretto-devel (アウトプット割愛) [root@AL2023 bin]# dnf list installed | grep -e tomcat -e java java-1.8.0-amazon-corretto.x86_64 1:1.8.0_472.b08-1.amzn2023 @amazonlinux java-1.8.0-amazon-corretto-devel.x86_64 1:1.8.0_472.b08-1.amzn2023 @amazonlinux java-17-amazon-corretto-headless.x86_64 1:17.0.17+10-1.amzn2023.1 @amazonlinux javapackages-filesystem.noarch 6.0.0-7.amzn2023.0.6 @amazonlinux javapackages-tools.noarch 6.0.0-7.amzn2023.0.6 @amazonlinux tomcat-native.x86_64 2.0.8-4.amzn2023.0.1 @amazonlinux tomcat9.noarch 1:9.0.111-1.amzn2023.0.1 @amazonlinux tomcat9-el-3.0-api.noarch 1:9.0.111-1.amzn2023.0.1 @amazonlinux tomcat9-jsp-2.3-api.noarch 1:9.0.111-1.amzn2023.0.1 @amazonlinux tomcat9-lib.noarch 1:9.0.111-1.amzn2023.0.1 @amazonlinux tomcat9-servlet-4.0-api.noarch 1:9.0.111-1.amzn2023.0.1 @amazonlinux [root@AL2023 bin]#
公式サンプルアプリのダウンロード
[root@AL2023 ~]# cd /var/lib/tomcat9/webapps/ [root@AL2023 webapps]# wget https://tomcat.apache.org/tomcat-9.0-doc/appdev/sample/sample.war --2025-12-04 05:08:23-- https://tomcat.apache.org/tomcat-9.0-doc/appdev/sample/sample.war Resolving tomcat.apache.org (tomcat.apache.org)... 151.101.2.132, 2a04:4e42::644 Connecting to tomcat.apache.org (tomcat.apache.org)|151.101.2.132|:443... connected. HTTP request sent, awaiting response... 200 OK Length: 4606 (4.5K) Saving to: ‘sample.war’ sample.war 100%[===================================================================================================================================================================>] 4.50K --.-KB/s in 0s 2025-12-04 05:08:24 (63.5 MB/s) - ‘sample.war’ saved [4606/4606] [root@AL2023 webapps]#
アプリの起動と、サンプルアプリのwarが展開されることを確認します。
[root@AL2023 bin]# systemctl status tomcat9
● tomcat9.service - Apache Tomcat 9 Web Application Container
Loaded: loaded (/usr/lib/systemd/system/tomcat9.service; disabled; preset: disabled)
Active: active (running) since Tue 2025-12-16 12:14:34 UTC; 39min ago
Main PID: 2575430 (java)
Tasks: 41 (limit: 2253)
Memory: 106.5M
CPU: 7.559s
CGroup: /system.slice/tomcat9.service
└─2575430 /usr/lib/jvm/java-1.8.0-amazon-corretto.x86_64/jre/bin/java -Djavax.sql.DataSource.Factory=org.apache.tomcat.dbcp.dbcp2.BasicDataSourceFactory -classpath /usr/share/tomcat9/bin/bootstrap.jar:/usr/share/tomcat9/bin/tomcat-juli.jar: -Dcatalina.base=/usr/share/tomcat9 -Dcatalina.home=/usr/share/tomcat9 -Djava.endorsed.dirs= -Djava.io.tmpdir=/var/cache/tomcat9/temp -Djava.util.logging.config.file=/usr/share/tomcat9/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager org.apache.catalina.startup.Bootstrap start
[root@AL2023 webapps]# find . /usr/share/tomcat9/webapps/
.
./sample.war
./sample
./sample/META-INF
./sample/META-INF/MANIFEST.MF
./sample/META-INF/war-tracker
./sample/WEB-INF
./sample/WEB-INF/classes
./sample/WEB-INF/classes/mypackage
./sample/WEB-INF/classes/mypackage/Hello.class
./sample/WEB-INF/lib
./sample/WEB-INF/web.xml
./sample/images
./sample/images/tomcat.gif
./sample/hello.jsp
./sample/index.html
/usr/share/tomcat9/webapps/
/usr/share/tomcat9/webapps/sample.war
/usr/share/tomcat9/webapps/sample
/usr/share/tomcat9/webapps/sample/META-INF
/usr/share/tomcat9/webapps/sample/META-INF/MANIFEST.MF
/usr/share/tomcat9/webapps/sample/META-INF/war-tracker
/usr/share/tomcat9/webapps/sample/WEB-INF
/usr/share/tomcat9/webapps/sample/WEB-INF/classes
/usr/share/tomcat9/webapps/sample/WEB-INF/classes/mypackage
/usr/share/tomcat9/webapps/sample/WEB-INF/classes/mypackage/Hello.class
/usr/share/tomcat9/webapps/sample/WEB-INF/lib
/usr/share/tomcat9/webapps/sample/WEB-INF/web.xml
/usr/share/tomcat9/webapps/sample/images
/usr/share/tomcat9/webapps/sample/images/tomcat.gif
/usr/share/tomcat9/webapps/sample/hello.jsp
/usr/share/tomcat9/webapps/sample/index.html
アプリは問題なく動きますが、jspページをブラウザーアクセスしたらエラーが出ました。
Exception javax.servlet.ServletException: java.lang.UnsupportedClassVersionError: org/eclipse/jdt/internal/compiler/env/INameEnvironment has been compiled by a more recent version of the Java Runtime (class file version 55.0), this version of the Java Runtime only recognizes class file versions up to 52.0 org.apache.jasper.servlet.JspServlet.service(JspServlet.java:305) javax.servlet.http.HttpServlet.service(HttpServlet.java:623) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) Root Cause java.lang.UnsupportedClassVersionError: org/eclipse/jdt/internal/compiler/env/INameEnvironment has been compiled by a more recent version of the Java Runtime (class file version 55.0), this version of the Java Runtime only recognizes class file versions up to 52.0 java.lang.ClassLoader.defineClass1(Native Method) java.lang.ClassLoader.defineClass(ClassLoader.java:756) java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) (略)
エラーの原因
TomcatがJSPをコンパイルする時に使用するecjライブラリーのクラスファイルバージョンが55.0であるため、Java11以上で動かす必要があります。
クラスファイルバージョンとJavaバージョンについて:
https://docs.oracle.com/javase/specs/jvms/se24/html/jvms-4.html#jvms-4.1-200-B.2
AL2023デフォルトレポジトリー(amazonlinux)に残ってる一番古いecjバージョンが1:4.23-1.amzn2023.0.3ですが、1:4.21-1からJava8がサポート除外になったことを確認できます。
[root@AL2023 tmp]# dnf list --showduplicates ecj Last metadata expiration check: 3:22:43 ago on Thu Dec 18 06:50:08 2025. Installed Packages ecj.noarch 1:4.23-1.amzn2023.0.4 @amazonlinux Available Packages ecj.noarch 1:4.23-1.amzn2023.0.3 amazonlinux ecj.noarch 1:4.23-1.amzn2023.0.4 amazonlinux [root@AL2023 bin]# dnf changelog ecj Last metadata expiration check: 0:00:07 ago on Wed Dec 24 09:41:16 2025. Listing all changelogs Changelogs for ecj-1:4.23-1.amzn2023.0.4.noarch * Fri Feb 03 00:00:00 2023 Keith Pimm <kpimm@amazon.com> - 4.23-1.amzn2023.0.4 - Add bcond to force dependency on JDK defined by javapackages-local - Define ExclusiveArch to java_arches macro * Tue Jan 31 00:00:00 2023 Stewart Smith <trawets@amazon.com> - 4.23-1.amzn2023.0.3 - Mass rebuild for AL2023 * Mon Aug 22 00:00:00 2022 Keith Pimm <kpimm@amazon.com> - 4.23-1.amzn2022.0.2 - Rebuild with Corretto 17 * Thu Jul 07 00:00:00 2022 Keith Pimm <kpimm@amazon.com> - 4.23-1.amzn2022.0.1 - Remove reference to OpenJDK * Fri Apr 01 00:00:00 2022 Mat Booth <mat.booth@gmail.com> - 1:4.23-1 - Update to latest upstream release * Sat Feb 05 00:00:00 2022 Jiri Vanek <jvanek@redhat.com> - 1:4.22-3 - Rebuilt for java-17-openjdk as system jdk * Thu Jan 20 00:00:00 2022 Fedora Release Engineering <releng@fedoraproject.org> - 1:4.22-2 - Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild * Mon Dec 06 00:00:00 2021 Mat Booth <mat.booth@gmail.com> - 1:4.22-1 - Update to latest upstream release * Wed Sep 15 00:00:00 2021 Mat Booth <mat.booth@gmail.com> - 1:4.21-1 - Update to latest upstream release - Drop build requirement on Java 8, ecj now requires Java 11 * Wed Aug 25 00:00:00 2021 Stefan Bluhm <stefan.bluhm@clacee.eu> - 1:4.19-3 - Added RHEL8 build.
結論
AL2023デフォルトレポジトリー(amazonlinux)のTomcat9でJSPを動かすにはJava11以降が必要です。
公式のパッケージではサポートされる構成でも、AL2023のようなOSに付属のパッケージにおいては依存パッケージの都合でアプリが動かない場合があります。