You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

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:

    1. 右键你的插件项目 → 选择「Properties」(属性)
    2. 进入「Java Compiler」选项卡:
      • 取消勾选「Use compliance from execution environment '...' on the 'Java Build Path'」
      • 把「Compiler compliance level」改成和服务器Java版本一致的数值(比如服务器用Java 11就选11,Java 8就选8)
    3. 切换到「Java Build Path」选项卡 → 「Libraries」:
      • 找到「JRE System Library」,如果它的版本比服务器高,就点击「Edit」,选择和服务器匹配的JRE版本(如果Eclipse里没有对应版本,需要先安装对应版本的JDK/JRE)
  • 第三步:重新编译并测试插件

    1. 先清理项目:顶部菜单栏「Project」→ 「Clean」,选择你的插件项目完成清理
    2. 重新导出Jar包:右键项目 → 「Export」→ 「Java」→ 「JAR file」,按照流程导出新的插件包
    3. 把新的Jar包替换服务器plugins文件夹里的旧文件,重启服务器测试
  • 额外检查:服务器启动脚本的Java路径
    如果你的服务器是用启动脚本运行的,打开脚本看看里面指定的Java路径是不是正确的版本。比如脚本里写了/usr/lib/jvm/java-17-openjdk/bin/java,但你以为服务器用的是Java 11,这也会导致版本不匹配。

内容的提问来源于stack exchange,提问作者FallenGalaxy_

火山引擎 最新活动