You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Springdoc 2.8.15与Spring Boot 3.5.11兼容异常:使用@Parameter/@OpenApiDefinition注解触发NoSuchMethodError错误

Springdoc 2.8.15与Spring Boot 3.5.11兼容异常:使用@Parameter/@OpenApiDefinition注解触发NoSuchMethodError错误

兄弟,这个问题我前段时间刚踩过坑!本质就是Swagger OAS注解的版本不匹配导致的依赖冲突,给你一步步拆解解决:

错误原因分析

你碰到的NoSuchMethodError: 'io.swagger.v3.oas.annotations.media.Schema$RequiredMode io.swagger.v3.oas.annotations.media.Schema.requiredMode()',核心是项目里同时存在两个不同版本的io.swagger.v3.oas.annotations包:

  • Spring Boot 3.5.11的默认依赖可能引入了旧版的Swagger注解,这个版本里Schema类还没有requiredMode()方法;
  • 而Springdoc 2.8.15需要调用这个方法来处理@Parameter@OpenApiDefinition这类注解,版本不匹配就触发了错误。

具体解决步骤

1. 排查依赖树,定位冲突

先执行Gradle命令查看依赖树,找出重复引入的Swagger相关依赖:

./gradlew dependencies --configuration compileClasspath | grep -A 5 -B 5 swagger

执行后你会发现,可能是Spring Boot的starter或者其他第三方依赖,悄悄引入了旧版本的swagger-annotationsswagger-core,和Springdoc需要的版本打架。

2. 强制统一Swagger注解版本

在你的build.gradle里,添加依赖版本强制规则,把Swagger注解和模型包的版本统一为和Springdoc 2.8.15兼容的稳定版本:

configurations.all {
    resolutionStrategy.force 'io.swagger.core.v3:swagger-annotations:2.2.20'
    resolutionStrategy.force 'io.swagger.core.v3:swagger-models:2.2.20'
}

3. 验证依赖是否生效

重新同步Gradle依赖后,再执行命令检查版本:

./gradlew dependencies --configuration compileClasspath | grep swagger-annotations

确保输出里只有你刚才指定的2.2.20版本,没有其他旧版本的痕迹。

4. 测试注解功能

现在再把@Parameter@OpenApiDefinition注解加回去,启动应用,应该就能正常生成API文档,不会再触发那个错误了。

额外注意事项

  • 以后升级Springdoc或Spring Boot时,一定要先核对版本兼容矩阵,Spring Boot 3.5.x系列对应Springdoc 2.8.x是没错,但要警惕其他依赖偷偷带进来的旧版Swagger包;
  • 如果项目里还有其他用到Swagger注解的第三方组件,也要确保它们的版本和你强制指定的版本兼容,避免二次冲突。

火山引擎 最新活动