今天更新发现了这个问题,使用LinuxGSM更新到1.21后
执行java -Xmx6144M -jar ./minecraft_server.jar nogui
错误: 加载主类 net.minecraft.bundler.Main 时出现 LinkageError

    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

意思是本机的JDK版本比游戏二进制文件版本编译所用的版本低了,Debian12默认OpenJDK版本是17对应class file version 61,65对应的应该是OpenJDK21,所以我得去手动安装OpenJDK21+

解决方案

wget https://download.java.net/java/GA/jdk22.0.1/c7ec1332f7bb44aeba2eb341ae18aca4/8/GPL/openjdk-22.0.1_linux-x64_bin.tar.gz
tar xvf openjdk-22.0.1_linux-x64_bin.tar.gz jdk-22.0.1/
sudo mv jdk-22.0.1/ /usr/local/jdk-22
sudo nano /etc/profile
添加:

setting jdk22 shehl path

export JAVA_HOME=/usr/local/jdk-22/
export PATH=$JAVA_HOME/bin:$PATH
保存
source /etc/profile
java --version

如果你完全按照我的操作进行那就得到如下输出

openjdk 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)
现在可以返回启动mc服务器了。
cd ~ && ./mcserver monitor

后记

难怪https://linuxgsm.com/servers/mcserver/ 上Minimum Recommended Distrosy要求Debian13
其实就是因为Debian12 官方仓库的JDK最高已经锁死17了。

标签: none

添加新评论