テスト済みのWARファイルをDockerで動かそうとしたら以下のエラーになってしまった…ということがあったので、原因と解決方法をメモ
java.lang.UnsupportedClassVersionError: ukaf/simple2/WelcomeResource has been compiled by a more recent version of the Java Runtime (class file version 61.0), this version of the Java Runtime only recognizes class file versions up to 60.0 (クラス[ukaf.simple2.WelcomeResource]をロードできません)
※ビルド~デプロイまでは正常に終わったのですが、以下のリクエストでAPIアクセスしたときにエラーになりました
http://localhost:8080/simple2/webapi/welcome?name=YOURNAME
##原因
タイトルにほぼ答えを書いてしまったのですが、ビルドしたときのJavaバージョンと実行するときのJavaバージョンにズレがあったのでエラーになっているそうです。
ビルド…WARファイルはEclipseで作ったプロジェクトから生成していたので、該当プロジェクトのプロパティを確認したところJava17でした。
※プロジェクトを右クリックで「プロパティー」を選択→「Javaのビルド・パス」をクリックしてJREシステムライブラリを確認
実行…Dcoker runしたときのコンソール画面を確認したところ以下のようなログがあったのでJava11っぽいです。
19-Oct-2021 08:41:54.371 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Java Home: /usr/local/openjdk-11
##解決方法
ビルド時のJavaバージョンをJava11に設定して再ビルド・デプロイ→WARエクスポート→Dockerでビルド・デプロイ したところ、正常に動くようになりました。
##参考
これ↓をやっている中で起きた話なので、詳しい経緯や手順についてはこちらを見ていただけると幸いです
簡単なJSPとJavaのセットを作ってDockerで動かす
More than 3 years have passed since last update.
Register as a new user and use Qiita more conveniently
- You get articles that match your needs
- You can efficiently read back useful information
- You can use dark theme