springboot升级到3.5.x后knife4j文档无法识别问题及解决过程

 更新时间:2025年12月29日 08:59:41   作者:咚咚阳丶  
在将Spring Boot从3.3.x升级到3.5.x后,访问接口文档页面时出现错误,原因是knife4j 4.5.0中使用的springdoc-openapi-starter-webmvc-ui版本过低,通过手动替换该依赖并关闭文档增强功能,问题得以解决

一、问题描述

将springboot从3.3.x版本升级到3.5.x后,访问xxx/doc.htm时原来的接口文档不显示了,同时控制台报错

jakarta.servlet.ServletException: Handler dispatch failed: java.lang.NoSuchMethodError: 'void org.springframework.web.method.ControllerAdviceBean.<init>(java.lang.Object)'

二、原因分析

knife4j 4.5.0中的springdoc-openapi-starter-webmvc-ui版本过低

三、解决方案

由于knife4j 4.5.0已是目前最新版本,所以只能手动替换knife4j 中 springdoc-openapi-starter-webmvc-ui版本,先排除springdoc-openapi-starter-webmvc-ui依赖,再单独引入即可

替换前

<!--knife4j & SpringDoc -->
<dependency>
    <groupId>com.github.xiaoymin</groupId>
    <artifactId>knife4j-openapi3-jakarta-spring-boot-starter</artifactId>
    <version>4.5.0</version> 
</dependency>

替换后

<!-- knife4j & SpringDoc -->
<dependency>
    <groupId>com.github.xiaoymin</groupId>
    <artifactId>knife4j-openapi3-jakarta-spring-boot-starter</artifactId>
    <version>4.5.0</version>
    <exclusions>
        <exclusion>
            <groupId>org.springdoc</groupId>
            <artifactId>springdoc-openapi-starter-webmvc-ui</artifactId>
        </exclusion>
    </exclusions>
</dependency>

<dependency>
    <groupId>org.springdoc</groupId>
    <artifactId>springdoc-openapi-starter-webmvc-ui</artifactId>
    <version>2.8.13</version>
</dependency>

注意:

还需要修改配置文件,关闭文档增强功能(knife4j.enable = false),这将会导致文档的用户名密码验证被绕过,如果开启文档增强功能的话,访问文档依然会报错,导致文档加载失败,如果不需要开启文档增强功能的话直接这样解决即可,需要进行密码验证的,这只是一个临时解决方案,可以在开发环境这样配置,正式环境依然开启文档增强,不使用线上文档即可,不会影响项目启动。最终还是希望官方早点更新新版本后进行升级。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • java实现图像转码为字符画的方法

    java实现图像转码为字符画的方法

    这篇文章主要为大家详细介绍了java实现图像转码为字符画的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-03-03
  • Mybatis一对多与多对一查询处理详解

    Mybatis一对多与多对一查询处理详解

    这篇文章主要给大家介绍了关于Mybatis一对多与多对一查询处理的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-03-03
  • 详解java调用存储过程并封装成map

    详解java调用存储过程并封装成map

    这篇文章主要介绍了详解java调用存储过程并封装成map的相关资料,希望通过本文能帮助到大家实现这样的功能,需要的朋友可以参考下
    2017-09-09
  • Java try catch语句异常处理详解

    Java try catch语句异常处理详解

    这篇文章主要给大家介绍了关于Java try catch语句异常处理的相关资料,Java中的try-catch用于捕获和处理异常,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2023-11-11
  • RabbitMQ的安装集群、镜像队列配置规划

    RabbitMQ的安装集群、镜像队列配置规划

    RabbitMQ 集群是一个或多个节点的逻辑分组,每个节点共享用户、虚拟主机、队列、流、交换机、绑定、运行时参数和其他分布式状态,本文给大家介绍RabbitMQ的安装集群、镜像队列配置规划,感兴趣的朋友一起看看吧
    2025-09-09
  • Java实现矩形碰撞检测

    Java实现矩形碰撞检测

    这篇文章主要为大家详细介绍了Java实现矩形碰撞检测,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-06-06
  • Java实现线程的暂停和恢复的示例详解

    Java实现线程的暂停和恢复的示例详解

    这几天的项目中,客户给了个需求,希望我可以开启一个任务,想什么时候暂停就什么时候暂停,想什么时候开始就什么时候开始,所以本文小编给大家介绍了Java实现线程的暂停和恢复的示例,需要的朋友可以参考下
    2023-11-11
  • JAVA构造函数不能使用void关键字问题

    JAVA构造函数不能使用void关键字问题

    这篇文章主要介绍了JAVA构造函数不能使用void关键字问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-03-03
  • Java时间复杂度、空间复杂度的深入详解

    Java时间复杂度、空间复杂度的深入详解

    对于一个算法,其时间复杂度和空间复杂度往往是相互影响的,当追求一个较好的时间复杂度时,可能会使空间复杂度的性能变差,即可能导致占用较多的存储空间,这篇文章主要给大家介绍了关于Java时间复杂度、空间复杂度的相关资料,需要的朋友可以参考下
    2021-11-11
  • SpringBoot项目中如何动态切换数据源、数据库

    SpringBoot项目中如何动态切换数据源、数据库

    本文主要介绍了SpringBoot项目中如何动态切换数据源、数据库,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2025-02-02

最新评论