You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 19:20:05