バグ #558
UnsupportedClassVersionError がスローされて Java Servlet が起動しない
開始日:
2019/11/23
期日:
進捗率:
100%
予定工数:
説明
# cat /usr/share/tomcat/logs/localhost.2019-11-23.log Nov 23, 2019 8:18:24 AM org.apache.catalina.core.StandardHostValve invoke SEVERE: Exception Processing /fastest-finger-first/challenge java.lang.UnsupportedClassVersionError: com/mizo0203/fastest/finger/first/ChallengeServlet 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 (unable to load class com.mizo0203.fastest.finger.first.ChallengeServlet) at org.apache.catalina.loader.WebappClassLoaderBase.findClassInternal(WebappClassLoaderBase.java:3209) at org.apache.catalina.loader.WebappClassLoaderBase.findClass(WebappClassLoaderBase.java:1373) at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1861) at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1735) at org.apache.catalina.core.StandardWrapper.servletSecurityAnnotationScan(StandardWrapper.java:1211) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:495) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:169) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:962) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:445) at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1087) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:637) at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:318) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at java.lang.Thread.run(Thread.java:748)
みぞ @mizo0203 さんがほぼ5年前に更新
- class file version 52.0: JRE 1.8
- class file version 55.0: JRE 11
JRE 11 向けにビルドしたが、 Web サーバの Java 実行環境は JRE 1.8 であった。
そのため、上記エラーにより Java Servlet が起動できなかった。
ひとまず、現行通り JRE 1.8 向けにビルドすることでこの問題を回避する。
下記、参考情報
CentOS 7 に OpenJDK 11 をインストールする手順¶
# yum install java-11-openjdk 読み込んだプラグイン:fastestmirror, langpacks Determining fastest mirrors epel/x86_64/metalink | 10 kB 00:00:00 * base: mirrors.cat.net * epel: mirrors.aliyun.com * extras: mirrors.cat.net * updates: mirrors.cat.net base | 3.6 kB 00:00:00 epel | 5.3 kB 00:00:00 extras | 2.9 kB 00:00:00 updates | 2.9 kB 00:00:00 (1/3): epel/x86_64/primary_db | 6.9 MB 00:00:00 (2/3): epel/x86_64/updateinfo | 1.0 MB 00:00:01 (3/3): updates/7/x86_64/primary_db | 4.2 MB 00:00:01 依存性の解決をしています --> トランザクションの確認を実行しています。 ---> パッケージ java-11-openjdk.x86_64 1:11.0.5.10-0.el7_7 を インストール --> 依存性の処理をしています: java-11-openjdk-headless(x86-64) = 1:11.0.5.10-0.el7_7 のパッケージ: 1:java-11-openjdk-11.0.5.10-0.el7_7.x86_64 --> トランザクションの確認を実行しています。 ---> パッケージ java-11-openjdk-headless.x86_64 1:11.0.5.10-0.el7_7 を インストール --> 依存性解決を終了しました。 依存性を解決しました =========================================================================================================================================================================================================================== Package アーキテクチャー バージョン リポジトリー 容量 =========================================================================================================================================================================================================================== インストール中: java-11-openjdk x86_64 1:11.0.5.10-0.el7_7 updates 212 k 依存性関連でのインストールをします: java-11-openjdk-headless x86_64 1:11.0.5.10-0.el7_7 updates 39 M トランザクションの要約 =========================================================================================================================================================================================================================== インストール 1 パッケージ (+1 個の依存関係のパッケージ) 総ダウンロード容量: 39 M インストール容量: 164 M Is this ok [y/d/N]: y Downloading packages: (1/2): java-11-openjdk-11.0.5.10-0.el7_7.x86_64.rpm | 212 kB 00:00:00 (2/2): java-11-openjdk-headless-11.0.5.10-0.el7_7.x86_64.rpm | 39 MB 00:00:04 --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 合計 7.8 MB/s | 39 MB 00:00:04 Running transaction check Running transaction test Transaction test succeeded Running transaction インストール中 : 1:java-11-openjdk-headless-11.0.5.10-0.el7_7.x86_64 1/2 インストール中 : 1:java-11-openjdk-11.0.5.10-0.el7_7.x86_64 2/2 検証中 : 1:java-11-openjdk-11.0.5.10-0.el7_7.x86_64 1/2 検証中 : 1:java-11-openjdk-headless-11.0.5.10-0.el7_7.x86_64 2/2 インストール: java-11-openjdk.x86_64 1:11.0.5.10-0.el7_7 依存性関連をインストールしました: java-11-openjdk-headless.x86_64 1:11.0.5.10-0.el7_7 完了しました!
# alternatives --config java 2 プログラムがあり 'java' を提供します。 選択 コマンド ----------------------------------------------- *+ 1 java-1.8.0-openjdk.x86_64 (/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.232.b09-0.el7_7.x86_64/jre/bin/java) 2 java-11-openjdk.x86_64 (/usr/lib/jvm/java-11-openjdk-11.0.5.10-0.el7_7.x86_64/bin/java) Enter を押して現在の選択 [+] を保持するか、選択番号を入力します:2
# java -version openjdk version "11.0.5" 2019-10-15 LTS OpenJDK Runtime Environment 18.9 (build 11.0.5+10-LTS) OpenJDK 64-Bit Server VM 18.9 (build 11.0.5+10-LTS, mixed mode, sharing)