You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java 21下出现Unsupported class file major version 65异常及奇怪现象求助

问题原因与解决方案

核心原因:构建缓存残留的旧环境文件导致ASM版本不兼容

这个报错本质是负责解析类文件的ASM库版本过低,无法识别Java 21对应的类文件主版本号65,但Gradle 8.5本身是支持Java 21的,问题出在构建缓存的残留:

  • 当你先用Java 17编译项目时,Gradle会把构建过程中的中间文件、依赖解析结果存入构建缓存。这些缓存内容是基于Java 17环境生成的,其中关联的ASM库版本只支持到Java 17的类版本(61)。
  • 切换回Java 21并引入新JAR(比如RDF4J)时,Gradle会尝试复用之前的缓存文件。但新引入的JAR可能是用Java 21编译的(类版本65),或者缓存里的旧ASM逻辑没有更新,导致解析时触发Unsupported class file major version 65错误。
  • 执行clean操作会彻底删除所有缓存的中间产物和构建文件,之后用Java 21重新构建时,Gradle会加载适配Java 21的ASM版本(Gradle 8.5默认配套的Groovy/ASM已经支持Java 21),自然能正确解析新JAR的类文件,编译恢复正常。

避免重复踩坑的小技巧

  • 切换Java版本后,优先执行./gradlew clean清理缓存,再进行构建操作,避免新旧环境的缓存冲突。
  • 调试时可以在gradle.properties里临时配置org.gradle.caching=false禁用构建缓存,快速排查环境切换类的构建问题(生产环境不建议长期关闭)。

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 12:46:06