1. 问题背景与项目环境搭建
作为一名长期使用SpringBoot进行开发的Java工程师,我最近决定将个人项目升级到SpringBoot 3.x版本。这个决定主要基于以下几个技术考量:
- 技术栈更新需求:SpringBoot 3.x基于Spring Framework 6.x构建,支持Java 17+特性,能够充分利用现代Java语言的改进
- 长期支持版本:SpringBoot 3.5.x是当前的主线版本,将获得长期维护和支持
- 性能优化:新版本在响应式编程、原生镜像支持等方面有显著提升
在搭建基础环境时,我选择了以下核心配置:
xml复制<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>3.5.9</version>
</dependency>
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>knife4j-openapi3-jakarta-spring-boot-starter</artifactId>
<version>4.5.0</version>
</dependency>
注意:SpringBoot 3.x要求JDK 17+环境,这是硬性要求。如果使用旧版JDK,项目将无法编译运行。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 问题现象与初步排查
项目启动过程一切正常,但当访问Knife4j的接口文档页面时,控制台抛出以下异常:
code复制java.lang.NoSuchMethodError: org.springframework.web.method.ControllerAdviceBean.<init>(Ljava/lang/Object;)V
这个错误让我十分困惑,因为:
- 我严格按照Knife4j官方文档进行了配置
- 项目能够正常启动,说明基础依赖没有问题
- 错误信息指向Spring Framework内部类的方法缺失
2.1 排查步骤
- 验证基础功能
