Spring Boot 3集成Swagger 2遇ClassNotFoundException错误的解决咨询
Spring Boot 3集成Swagger启动失败问题解决
问题描述
在Spring Boot 3项目中引入Swagger相关依赖后启动报错,核心错误信息如下:
java.lang.TypeNotPresentException: Type javax.servlet.http.HttpServletRequest not present Caused by: java.lang.ClassNotFoundException: javax.servlet.http.HttpServletRequest
项目pom.xml中配置的Swagger相关依赖:
<dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>3.0.0</version> </dependency> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger-ui</artifactId> <version>3.0.0</version> </dependency> <dependency> <groupId>org.springdoc</groupId> <artifactId>springdoc-openapi-starter-webmvc-ui</artifactId> <version>2.0.2</version> </dependency>
原因分析
- API规范兼容问题:Spring Boot 3基于Spring 6,全面采用Jakarta EE API(包前缀为
jakarta.*),而Springfox 3.0.0仍依赖旧的Java EE API(包前缀为javax.*),导致无法找到javax.servlet.http.HttpServletRequest类。 - 依赖冲突:同时引入Springfox和Springdoc两种Swagger实现框架,二者底层机制不一致,引发依赖加载冲突。
解决方案
1. 移除不兼容的Springfox依赖
删除pom.xml中所有io.springfox相关依赖——Springfox已停止维护,且不支持Spring Boot 3及Jakarta EE规范。
2. 保留并使用Springdoc依赖
仅保留Springdoc OpenAPI依赖,这是当前支持Spring Boot 3的主流Swagger实现:
<dependency> <groupId>org.springdoc</groupId> <artifactId>springdoc-openapi-starter-webmvc-ui</artifactId> <version>2.0.2</version> </dependency>
3. 验证访问
启动项目后,通过以下路径访问:
- Swagger UI页面:
http://localhost:端口号/swagger-ui.html - OpenAPI规范文档:
http://localhost:端口号/v3/api-docs
内容的提问来源于stack exchange,提问作者Sercan Noyan Germiyanoğlu
相关产品推荐
相关产品推荐

