编译Fabric模组报Unsupported class file major version 63错误如何解决
报错原因
首先澄清一个错误认知:Java class文件主版本号不存在“最高仅到61”的限制,61是Java 17(LTS长期支持版)对应的版本号,Java每出一个大版本,class主版本号就会加1,对应关系如下:
- 61 = Java 17
- 62 = Java 18
- 63 = Java 19
- 64 = Java 20
- 65 = Java 21
remapJar是Fabric Loom插件负责字节码重映射的核心任务,底层靠ASM库处理字节码。如果你用的Loom版本太老,内置的ASM没适配高版本Java的class格式,读到Java 19编译出来的63版本class文件,就会直接抛这个不支持版本的错误,本质就是构建用的JDK版本和Loom插件版本不匹配。
解决方法
按优先级选对应操作即可,第一种是最稳妥的通用方案:
- 方案1:切到Java 17构建(推荐)
目前Fabric全生态稳定兼容的JDK版本就是Java 17,绝大多数模组开发都不需要更高版本JDK:- 打开IntelliJ设置,走路径
Settings > Build, Execution, Deployment > Build Tools > Gradle,把Gradle JVM项改成你本地安装的JDK 17 - 打开项目根目录的
build.gradle,确认编译目标版本配置正确:sourceCompatibility = JavaVersion.VERSION_17 targetCompatibility = JavaVersion.VERSION_17 - 先在终端跑
./gradlew clean把之前构建产生的高版本class缓存清掉,再重新跑构建就不会报错了。
- 打开IntelliJ设置,走路径
- 方案2:必须用Java 19+编译的情况
如果你有特殊需求必须用Java 19及以上版本,把Fabric Loom插件升到1.0及以上正式版即可——0.1x系列的老版Loom最高只支持到Java 18,1.0之后才加了高版本Java的字节码适配:- 打开根目录下的
settings.gradle(部分老项目插件配置写在build.gradle的plugins块里),把fabric-loom的版本改成1.0+的稳定版,示例:plugins { id 'fabric-loom' version '1.4.6' } - 同样先执行clean清空缓存再重新构建。
- 打开根目录下的
内容的提问来源于stack exchange,提问作者Wrong Soup
相关产品推荐
相关产品推荐

