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

如何忽略依赖中的Spring Boot自动配置?解决ASM版本兼容错误

解决Java 8 Spring Boot项目中依赖自动配置的Java版本不兼容问题

问题背景

基于Groovy、Java 8和Spring Boot开发的测试框架,升级某依赖后运行测试出现以下报错:

Caused by: 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: class path resource

    at org.springframework.boot.autoconfigure.AutoConfigurationSorter$AutoConfigurationClass.getAnnotationMetadata(AutoConfigurationSorter.java:229)
    ... 86 more
Caused by: java.lang.IllegalArgumentException: Unsupported class file major version 61
    at org.springframework.asm.ClassReader.<init>(ClassReader.java:196)
    at org.springframework.asm.ClassReader.<init>(ClassReader.java:177)
    at org.springframework.asm.ClassReader.<init>(ClassReader.java:163)
    at org.springframework.asm.ClassReader.<init>(ClassReader.java:284)
    at org.springframework.core.type.classreading.SimpleMetadataReader.getClassReader(SimpleMetadataReader.java:57)
    ... 92 more

排查后确认,问题源于该依赖spring.factories中的自动配置项org.springframework.boot.autoconfigure.EnableAutoConfiguration=com.app.api.config.testAutoConfig——该依赖基于Java 17构建(major version 61对应Java 17),而项目用Java 8编译,导致Spring的ASM无法解析高版本类文件。

解决方法

方法1:通过注解排除指定自动配置类

在项目启动类或测试类的Spring注解中,直接添加exclude参数排除目标自动配置类:

启动类示例:

@SpringBootApplication(exclude = {testAutoConfig.class})
public class TestFrameworkApplication {
    public static void main(String[] args) {
        SpringApplication.run(TestFrameworkApplication.class, args);
    }
}

测试类示例:

@SpringBootTest(exclude = {testAutoConfig.class})
public class YourTestClass {
    // 测试逻辑
}

方法2:通过配置文件全局排除

若不想修改代码,可在项目的配置文件中添加排除规则:

application.properties格式:

spring.autoconfigure.exclude=com.app.api.config.testAutoConfig

application.yml格式:

spring:
  autoconfigure:
    exclude: com.app.api.config.testAutoConfig

需排除多个类时,用逗号分隔即可。

方法3:修改依赖的spring.factories(不推荐)

若有权限修改依赖源码,可删除该依赖META-INF/spring.factories中对应的自动配置条目,但此方法需要重新打包依赖,通用性差,仅作为备选方案。

注意事项

  • 排除自动配置后,需确认项目无需该类提供的功能,或手动实现对应的配置逻辑,避免功能缺失。
  • 若后续项目升级至Java 17及以上版本,可移除排除配置,恢复自动配置的使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 09:35:35