はじめ
今回はJavaのバージョンが違うエラーについてなのですが、こんなのよく遭遇するので記事があちこちにあります
しかし、私が遭遇したのがあまり見ない原因で時間がかかったのでまとめていきます
問題
Kotlin(Quarkus)でアプリを作り起動をしたところ以下のエラーが出ました
$ quarkus dev
Caused by: java.lang.UnsupportedClassVersionError: com/sample/rest/Pong 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 55.0
前まで動いていたのでなぜか動かなくなっていました
またエラーから察するにJava17以上にすれば問題ないと思うのですが
$ java -version
openjdk version "17.0.4" 2022-07-19
OpenJDK Runtime Environment Temurin-17.0.4+8 (build 17.0.4+8)
OpenJDK 64-Bit Server VM Temurin-17.0.4+8 (build 17.0.4+8, mixed mode, sharing)
ちゃんとバージョンは正しくなっていました
解決方法
quarkus dev
コマンドを打つとmvn
コマンドが実行されます
mvn
のバージョンをみました
$ mvn -v
Apache Maven 3.9.2 (c9616018c7a021c1c39be70fb2843d6f5f9b8a1c)
Maven home: /opt/maven
Java version: 11.0.19, vendor: Ubuntu, runtime: /usr/lib/jvm/java-11-openjdk-amd64
Default locale: ja_JP, platform encoding: UTF-8
OS name: "linux", version: "5.15.0-72-generic", arch: "amd64", family: "unix"
mvn
だとjava11
が使われていました
これはmvnをローカルに入れた際に自動で入ったものでそれが実行されていました
そこでmvnのバージョンを変えたところうまく行きました
私は以下の記事でいれており、export JAVA_HOME...で上書きしていたので、行を消しました
おわりに
地味に時間がかかってしまいました
記事を調べても有用なものがなく、ChatGPTも意味がなさそうでした
解決できてよかったです
参考