从Jakarta切换到javax后Spring Boot启动报错,@Test注解异常求助
问题分析与解决方案
错误根源
- Java版本与Spring Boot版本不兼容:
Unsupported class file major version 63对应Java 19,你当前使用的Spring Boot版本(大概率是2.x系列)依赖的ASM库无法解析Java 19编译的class文件,因为Spring Boot 2.x最高仅支持Java 17。 - Jakarta/javax包手动切换导致版本混乱:Spring Boot 3+才适配
jakarta.*包体系,2.x版本适配javax.*。你之前的Jakarta包报错,本质是Spring Boot版本和Jakarta依赖不匹配,手动切换到javax后,又因Java版本过高触发了ASM解析失败问题。
解决步骤
- 对齐Spring Boot与Java版本:
- 若坚持使用Java 19,必须升级到Spring Boot 3.0及以上版本(Spring Boot 3.x最低支持Java 17,兼容19),此时保留
jakarta.*包,不要切换到javax。 - 若不想升级Spring Boot,将Java版本降级到17及以下(Spring Boot 2.x最高支持Java 17),同时使用
javax.*包。
- 若坚持使用Java 19,必须升级到Spring Boot 3.0及以上版本(Spring Boot 3.x最低支持Java 17,兼容19),此时保留
- 修正测试注解依赖:确保
@Test注解来自正确的包:- Spring Boot 3.x:
import org.junit.jupiter.api.Test;(JUnit 5,适配Jakarta生态) - Spring Boot 2.x:
import org.junit.jupiter.api.Test;或import org.junit.Test;(根据JUnit版本选择,适配javax生态)
- Spring Boot 3.x:
- 清理重建项目:删除
target(Maven)或build(Gradle)目录,执行mvn clean install或gradle clean build,确保依赖和编译产物一致。
注意事项
不要通过手动修改包名(Jakarta→javax)解决依赖报错,这种操作会破坏Spring Boot的依赖一致性,应通过调整Spring Boot或Java版本来适配对应的包体系。
内容的提问来源于stack exchange,提问作者Novice
相关产品推荐
相关产品推荐

