java.lang.NoClassDefFoundError:org/springframework/test/util/MetaAnnotationUtils while running unit tests in Spring 6

tjrkku2a  于 2023-03-28  发布在  Java
关注(0)|答案(2)|浏览(118)

我试图将Spring框架从版本5升级到版本6,但在尝试运行单元测试时出现以下错误。

java.lang.NoClassDefFoundError: org/springframework/test/util/MetaAnnotationUtils
Caused by: java.lang.ClassNotFoundException: org.springframework.test.util.MetaAnnotationUtils

我也没有看到“MetaAnnotationUtils”类下的“spring-test”jar为6.0.6在我编译的项目。我也不能看到这个类被使用在我的测试类的任何地方,因此不知道该怎么办。围绕这一点有什么想法?
注意:我在当前项目中使用Java 17,Sping Boot 3.0.4和Spring 6。
我尝试根据团队的要求升级项目以使用Spring 6和Java 17。

zysjyyx4

zysjyyx41#

当Java Runtime运行Java程序时,它不会一次加载所有的类和依赖项。相反,它会调用Java Classloader在需要时加载内存中的类。在加载类时,如果Classloader找不到类的定义,它会抛出NoClassDefFoundError。
Java找不到类的定义有几个原因,它们是:
最常见的原因是缺少一些依赖的jar。所有jar都作为依赖项添加,但路径错误。依赖项中的版本不匹配。

swvgeqrz

swvgeqrz2#

  • org.springframework.test.util.MetaAnnotationUtils自Spring Framework 5.3起已弃用,取而代之的是TestContextAnnotationUtils*

https://docs.spring.io/spring-framework/docs/5.3.13/javadoc-api/deprecated-list.html
位于package org.springframework.test.context.TestContextAnnotationUtils
在Spring 5中,它被弃用,在Spring 6中,它被完全删除,需要用TestContextAnnotationUtils替换。

相关问题