Minecraft插件加载报错JVMCFRE003:如何解决类版本不兼容问题?
解决Minecraft插件加载时的
JVMCFRE003 bad major version错误 这个问题我之前帮朋友排查过好几次,核心原因很明确:你编译插件时用的Java版本,比Minecraft服务器正在运行的Java版本高。JVM对类文件的版本有严格要求,高版本Java编译出的类文件,低版本JVM是没法识别的,就会抛出这个UnsupportedClassVersionError。
给你一步步的解决方案:
第一步:确认服务器的Java版本
打开服务器控制台,输入命令:java -version记下输出里的版本号,比如
openjdk version "11.0.18",这里的核心版本是11。第二步:调整Eclipse的编译配置
这是最容易踩坑的地方,光改编译合规性还不够,得同步调整Build Path:- 右键你的插件项目 → 选择「Properties」(属性)
- 进入「Java Compiler」选项卡:
- 取消勾选「Use compliance from execution environment '...' on the 'Java Build Path'」
- 把「Compiler compliance level」改成和服务器Java版本一致的数值(比如服务器用Java 11就选11,Java 8就选8)
- 切换到「Java Build Path」选项卡 → 「Libraries」:
- 找到「JRE System Library」,如果它的版本比服务器高,就点击「Edit」,选择和服务器匹配的JRE版本(如果Eclipse里没有对应版本,需要先安装对应版本的JDK/JRE)
第三步:重新编译并测试插件
- 先清理项目:顶部菜单栏「Project」→ 「Clean」,选择你的插件项目完成清理
- 重新导出Jar包:右键项目 → 「Export」→ 「Java」→ 「JAR file」,按照流程导出新的插件包
- 把新的Jar包替换服务器plugins文件夹里的旧文件,重启服务器测试
额外检查:服务器启动脚本的Java路径
如果你的服务器是用启动脚本运行的,打开脚本看看里面指定的Java路径是不是正确的版本。比如脚本里写了/usr/lib/jvm/java-17-openjdk/bin/java,但你以为服务器用的是Java 11,这也会导致版本不匹配。
内容的提问来源于stack exchange,提问作者FallenGalaxy_




