Problem summary
I'm trying to set up my raspberry pi 4 as a minecraft server as described here.
I've installed the default version of java. The output from java -version
is
openjdk version "17.0.11" 2024年04月16日
The next step is to launch the server with the command
java -Xmx1024M -Xms1024M -jar server.jar
However, when I try this, I get the following 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
I assume that this means that the minecraft server uses files written for a later version of Java?
If this is true, how can I get more recent versions of Java for raspberry pi OS?
I imaged the card just yesterday using the Raspberry Pi Imager and did apt update and upgrade.
Linux raspberrypi 6.6.20+rpt-rpi-v8 #1 SMP PREEMPT Debian 1:6.6.20-1+rpt1 (2024年03月07日) aarch64
-
A bit curious that it requires Java 21 (the latest LTS at the time of writing) while the official Wiki stated it only requires Java 18, but maybe the wiki is outdated...Andrew T.– Andrew T.2024年04月29日 11:00:52 +00:00Commented Apr 29, 2024 at 11:00
1 Answer 1
a more recent version of the Java Runtime (class file version 65.0)
That's java 22 which is not available in current RaspiOS.
If this is the major purpose for the Pi, you could install an OS that does provide java 22. Unfortunately, this may not be easy as the latest on Ubuntu 24.04 is java 21. Java 22 is in Fedora 39+, which should be installable, but I cannot vouch for how easy that is or how well it works for various purposes (there are not a lot of such users, I think).
Your other choice is to try installing OpenJDK 22 directly:
You need the 64-bit version of RaspiOS for this (from your question it looks like the kernel is, if you are not sure beyond that just check the output from file /bin/bash
, there should be an "aarch64" in the line of output), and download the "Linux / AArch64" package from the link above. Put that in /opt
and from there:
sudo tar -xzf openjdk-22.0.1_linux-aarch64_bin.tar.gz
This will take a few seconds. You'll end up with an /opt/jdk-22.0.1
. Now:
sudo update-alternatives --install /usr/bin/java java /opt/jdk-22.0.1/bin/java 1
sudo update-alternatives --config java
Don't miss the whole first command, which ends in 1
. The second should then give you a numbered list to choose from; pick the one corresponding to jdk-22, and (hopefully) viola. I tried this on a Pi 4 still running RaspiOS 11 (bullseye) and:
> java -version
openjdk version "22.0.1" 2024年04月16日
OpenJDK Runtime Environment (build 22.0.1+8-16)
OpenJDK 64-Bit Server VM (build 22.0.1+8-16, mixed mode, sharing)
I'm not a minecraft user, but this should do the trick.
-
1Outstanding, thank you. Went with the install directly option and that seems to have worked.r.bot– r.bot2024年04月28日 20:20:32 +00:00Commented Apr 28, 2024 at 20:20
-
Exactly what I was looking for, and is the exact version I needed too. Thank you!RoboticForest– RoboticForest2024年06月11日 04:01:03 +00:00Commented Jun 11, 2024 at 4:01
-
"This will take a few seconds. You'll end up with an /opt/jdk-22.0.1". I've tried but there is no 'jdk-22.0.1' in the
opt/
directory. I still only have the archive I placed there. When I get in the opt directory to run the tar command, it says permission denied also.Chris Ze Third– Chris Ze Third2024年06月21日 19:18:54 +00:00Commented Jun 21, 2024 at 19:18 -
All apologies -- that should have had
sudo
in front of it.goldilocks– goldilocks2024年06月22日 13:22:31 +00:00Commented Jun 22, 2024 at 13:22