ASM ClassReader failed to parse class

SpringBoot报错

Failed to read candidate component class: file [springboot启动类];

nested exception is org.springframework.core.NestedIOException: ASM ClassReader failed to parse class file - probably due to a new Java class file version that isn’t supported yet: file SpringBoot启动类];

解释:Spring Framework 使用的 ASM 库无法解析某些类文件。具体来说,这通常是由于类文件版本较新,而当前 ASM 库还不支持该版本。

nested exception is java.lang.IllegalArgumentException: Unsupported class file major version 61

  1. 原因springframework和jdk不匹配,spring framework的版本过低,而jdk版本高

  2. 解决办法 修改springboot版本

Spring Framework 5.x

Spring Framework 5.1 需要 JDK 8 或更高版本,并首次专门支持 JDK 11

Supported Versions1
Spring Framework->JDK

  • Spring Framework 6.2.x: JDK 17-25 (expected)
  • Spring Framework 6.1.x: JDK 17-23
  • Spring Framework 6.0.x: JDK 17-21
  • Spring Framework 5.3.x: JDK 8-21 (as of 5.3.26)

更为详细的

Spring Framework 5.3.x: JDK 8-17 (expected)
Spring Framework 5.2.x: JDK 8-15 (expected)
Spring Framework 5.1.x: JDK 8-12
Spring Framework 5.0.x: JDK 8-10
Spring Framework 4.3.x: JDK 6-8


如何查看SpringFramework版本->SpringBoot

springboot版本依赖springframework版本发布日期
2.2.x5.2.x2019.10 - 2021.01
2.3.x5.2.x2020.05 - 2021.06
例如2.3.1.RELEASE5.2.7
2.4.0-135.3.1-132020.11 - 2021.11
2.5.x5.3.x2021.05 - 2021.12
2.6.x5.3.x2021.11 - 2022.06
2.7.x5.3.x2022.05 - 2022.06

根据自己的jdk版本选择springboot的版本

比如jdk 17 要求 Spring FrameWork 最低是5.3.1

根据5.3.0 选择 springboot 版本2.4.0

最后建议,springboot版本在6.0.0以上的,最低选择jdk 17,17最低支持5.3.x

5.0-5.3 最低是jdk 8

Spring wiki介绍

全面测试并支持在长期支持(LTS)版本的 JDK 上运行 Spring,目前包括 JDK 8、JDK 11、JDK 17 和 JDK 21。此外,我们对中间版本(如 JDK 18、19、20)提供最佳努力支持,接受 bug 报告并尽可能解决这些问题,但不提供任何服务级别保证。我们建议在生产环境中使用 JDK 17 和 21 来运行 Spring Framework 6.x 和 5.3.x。

ASM 是一个 Java 字节码操控库。它允许开发者以编程方式读取、修改和生成 Java 字节码。Spring Framework 使用 ASM 来进行字节码分析,例如在类路径扫描过程中。

参考来源


  1. [Spring Framework Versions · spring-projects/spring-framework Wiki (github.com)]( ↩︎

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值