環境
- Raspberry Pi 4 8GB
- Raspberry Pi OS 64bit
- ストレージ:SSD(USB3.0接続) 128GB
サーバーが起動できない
Minecraftの新バージョン(1.21)が出たので、ラズパイサーバーで起動しようとした。
しかし、エラーが発生し起動できない。
$ java -Xmx4G -Xms4G -jar server.jar nogui
Error: LinkageError occurred while loading main class net.minecraft.bundler.Main
java.lang.UnsupportedClassVersionError: net/minecraft/bundler/Main has been compiled by a more recent version of the Java Runtime (class file version 65.0), this version of the Java Runtime only recognizes class file versions up to 61.0
具体的には、MinecraftサーバーがJavaの新しいバージョンでコンパイルされており、クラスファイルバージョン65.0を要求しているようだ。
Javaを更新する
当方が最後に起動したMinecraftサーバーは1.20.1である。
Javaのバージョンを確認すると17.0.11だった。これを更新する必要がある。
$ java -version
openjdk version "17.0.11" 2024-04-16
OpenJDK Runtime Environment (build 17.0.11+9-Debian-1deb11u1)
OpenJDK 64-Bit Server VM (build 17.0.11+9-Debian-1deb11u1, mixed mode, sharing)
どうせこのバージョンはもう使わないので削除する。
$ sudo apt remove openjdk-*
クラスファイルバージョン65.0以上を要求しているため、Java21以上が必要なようだ。
https://javaalmanac.io/bytecode/versions/
aptでインストール
aptを用いて対応しているopenjdkのインストールを試みる。
$ sudo apt install openjdk-21-jdk
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
E: Unable to locate package openjdk-21-jdk
$ sudo apt install openjdk-22-jdk
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
E: Unable to locate package openjdk-22-jdk
openjdkの21以降が必要だが、21も22(GA最新版)もaptではインストールできない。
Ubuntuでインストールできている記事を散見するので、armなのが問題なのだろうか。有識者求ム。
手動でインストール
aptが使えないので、こちらから自分でarmのバイナリを落としてインストールする。
2024/07/19現在、最新のGAは22.0.2とのことなので、それをインストールする。
openjdkをダウンロードする
wgetでダウンロード
$ wget https://download.java.net/java/GA/jdk22.0.2/c9ecb94cd31b495da20a27d4581645e8/9/GPL/openjdk-22.0.2_linux-aarch64_bin.tar.gz
落としたtar.gzを解凍する
$ tar -xvf openjdk-22.0.2_linux-aarch64_bin.tar.gz
適切なディレクトリに保存
$ sudo cp -r jdk-22.0.2 /opt/
環境変数の設定
$ vi ~/.bashrc
ファイルの最後に、次の2行を追記する。
export JAVA_HOME=/opt/jdk-22.0.2
export PATH=$PATH:$JAVA_HOME/bin
設定を反映させるため、一度ターミナルを切ってから再度開く。
そしてバージョンを確認。
$ java -version
openjdk version "22.0.2" 2024-07-16
OpenJDK Runtime Environment (build 22.0.2+9-70)
OpenJDK 64-Bit Server VM (build 22.0.2+9-70, mixed mode, sharing)
これで1.21のMinecraftサーバーが起動できるようになった。
まとめ
Javaランタイムのバージョンが古く、Minecraftサーバーを起動できなかった。
aptで適切なパッケージが見つからなかったため、手動でGA最新版のarm用ランタイムをインストールして解決した。