报错信息如下
Caused by: java.lang.NoClassDefFoundError: org/springframework/core/metrics/ApplicationStartup
报错说找不到ApplicationStartup这个类,到项目中查看pom的dependency
我的项目引入了两个依赖
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.5.RELEASE</version>
</parent>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>5.3.22</version>
</dependency>
ApplicationStartup是在spring-boot-starter-parent中的,那么为什么找不到了呢? 我们需要知道包加载的顺序
1路径越短,优先使用
2在同一个pom中,越靠上越先使用
看一下依赖分析,发现spring-beans全部使用的5.3.22,也就是依赖中单独配置的spring-beans,所以是因为5.3.22中没有这个类ApplicationStartup导致的
我们验证一下:只保留
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.5.RELEASE</version>
</parent>
看一下spring-beans是用的什么
所以我们导入了不适配的spring-beans导致项目有问题
解决办法,
1要么直接把spring-beans删除掉,使用spring-parent自带的spring-beans。
2加入5.2.4的spring-beas
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>5.2.4</version>
</dependency>