Java 17升级后Grails应用SpotBugs扫描报错求助
解决Java 17下SpotBugs报
Unsupported class file major version 61错误 问题根源
你遇到的错误是因为Java 17的类文件版本(标识为61)超出了当前SpotBugs依赖的ASM库支持范围。你的配置中存在版本不匹配问题:Gradle SpotBugs插件用了4.5.0,但工具版本却指定了不支持Java 17的4.2.2,旧版本SpotBugs依赖的ASM无法处理Java 17生成的类文件。
解决方案
1. 统一升级到支持Java 17的SpotBugs版本
SpotBugs从4.7.0版本开始正式支持Java 17,需确保插件版本与工具版本一致:
- 修改
build.gradle中的插件版本:
plugins { // 保留其他原有插件 id 'com.github.spotbugs' version '4.7.3' // 升级至兼容Java17的插件版本 }
- 更新
global-config.gradle中的工具版本,与插件版本匹配:
spotbugs { toolVersion = '4.7.3' // 该版本原生支持Java17 }
2. 清理缓存并重新执行任务
运行以下命令清理构建缓存,避免旧版本依赖残留:
./gradlew clean spotbugsMain spotbugsTest spotbugsIntegrationTest
额外检查项
- 确保你的Gradle版本不低于7.3(Gradle 7.3及以上对Java 17的兼容性更好)
- 确认项目编译环境已完全切换到Java 17,避免混合不同Java版本编译导致类文件版本混乱
内容的提问来源于stack exchange,提问作者user24841559
相关产品推荐
相关产品推荐

