Spring Boot 3集成Open API遭遇NoClassDefFoundError问题求助
问题原因与解决方案
这是依赖配置错误,并非组件本身的问题。
核心原因
Spring Boot 3.x 基于 Jakarta EE 规范,所有 Servlet API 包路径从 javax.servlet 迁移到了 jakarta.servlet。而:
springdoc-openapi-ui:1.7.0是适配 Spring Boot 2.x 的版本,其依赖的springdoc-openapi-webmvc-core:1.7.0仍使用旧的javax.servlet路径;springdoc-openapi-starter-webmvc-ui:2.1.0是适配 Spring Boot 3.x 的版本,采用新的jakarta.servlet路径。
你同时引入了这两个跨版本的依赖,导致依赖冲突,触发 NoClassDefFoundError(找不到 javax.servlet.http.HttpServletRequest,因为 Spring Boot 3 环境中只有 jakarta.servlet 相关类)。
修复方案
移除旧版本的 springdoc-openapi-ui 依赖,仅保留适配 Spring Boot 3.x 的 starter 依赖即可。springdoc-openapi-starter-webmvc-ui 已经包含了 UI 所需的全部核心功能,无需额外引入旧版依赖。
正确的依赖配置如下:
<dependency> <groupId>org.springdoc</groupId> <artifactId>springdoc-openapi-starter-webmvc-ui</artifactId> <version>2.1.0</version> </dependency>
验证说明
修改后,项目会自动引入适配 Jakarta EE 的 springdoc-openapi-webmvc-core 对应版本(与 starter 版本一致),该版本的 OpenApiWebMvcResource 类会使用 jakarta.servlet.http.HttpServletRequest 导入,避免类路径冲突。
内容的提问来源于stack exchange,提问作者throp
相关产品推荐
相关产品推荐

