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

Spring Boot3.1+Java17启动报错:Unsupported class file major version61

问题分析与解决方案

核心原因

java.lang.IllegalArgumentException: Unsupported class file major version 61 本质是有组件无法识别Java 17编译的类文件(版本号61对应Java 17)。你手动将Spring Framework降级到6.0.9,但Spring Boot 3.1.0默认依赖的是Spring Framework 6.0.11,版本不匹配导致依赖链中存在未适配Java 17的组件——即便手动升级ASM到9.5,也可能被Spring旧版本的依赖覆盖,无法生效。

具体解决步骤

1. 优先移除Spring版本的显式降级配置

Spring Boot的依赖管理已经完成了版本适配,直接删除build.gradle中手动指定Spring版本的代码,让Spring Boot自动管理所有依赖版本:

// 删除类似以下的配置
ext['spring.version'] = '6.0.9'
// 或dependencyManagement块中关于Spring Framework的版本指定

2. 若必须保留Spring 6.0.9,强制统一ASM版本

如果业务要求必须使用Spring 6.0.9,需确保整个依赖树中的ASM版本统一为9.5,在build.gradle中添加强制依赖规则:

configurations.all {
    resolutionStrategy.force 'org.ow2.asm:asm:9.5'
    resolutionStrategy.force 'org.ow2.asm:asm-commons:9.5'
    resolutionStrategy.force 'org.ow2.asm:asm-tree:9.5'
    // 根据实际依赖情况,补充其他ASM相关模块(如asm-analysis、asm-util等)
}

3. 检查依赖树定位冲突组件

执行Gradle命令生成依赖树,排查是否存在未适配Java 17的组件:

./gradlew dependencies --configuration runtimeClasspath

搜索asm关键词,确认是否有模块仍在使用低于9.5的ASM版本,针对性进行排除或升级。

4. 确保编译与运行环境一致

验证build.gradle中Java版本配置,保证编译和运行都使用Java 17:

java {
    sourceCompatibility = JavaVersion.VERSION_17
    targetCompatibility = JavaVersion.VERSION_17
}

tasks.withType(JavaExec) {
    javaLauncher = javaToolchains.launcherFor {
        languageVersion = JavaLanguageVersion.of(17)
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 13:02:31