Spring框架从5.2.x升级至5.3.x后运行测试报NoClassDefFoundError求助
检查依赖版本一致性:确保所有Spring相关依赖统一使用5.3.x版本,避免混合5.2.x的旧依赖。用Maven的
mvn dependency:tree或Gradle的./gradlew dependencies命令排查依赖树,找出并移除冲突的旧版本依赖。如果用Maven,建议通过dependencyManagement统一管控所有Spring组件的版本号,从根源避免版本不一致问题。替换过时API引用:
ResourcePropertiesPersister在Spring 5.3中已被移除,代码中如果直接调用了这个类,需要替换为Spring 5.3提供的替代方案。比如原来用它加载资源属性的代码,可以改用PropertiesLoaderUtils.loadProperties(Resource resource)方法,或者直接使用ResourceProperties类处理相关逻辑。清理构建缓存:旧版本的class文件可能残存在构建缓存中,导致类加载异常。执行Maven的
mvn clean install或Gradle的./gradlew clean build命令,清理缓存后重新构建项目。排查第三方依赖冲突:如果项目依赖的第三方库引用了Spring 5.2.x的组件,会间接引入旧版本的
spring-core包。通过依赖树排查出这类库,要么升级该第三方库到兼容Spring 5.3的版本,要么在依赖声明中排除掉它所依赖的旧版本Spring核心包。比如Maven中可以通过<exclusions>标签排除指定依赖:
<dependency> <groupId>第三方库groupId</groupId> <artifactId>第三方库artifactId</artifactId> <version>对应版本</version> <exclusions> <exclusion> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> </exclusion> </exclusions> </dependency>
内容的提问来源于stack exchange,提问作者Saintka

