Handler dispatch failed: java.lang.NoSuchMethodError: ‘void org.springframework.web.method.Controlle

解决办法,在定义的异常类上加注解

@Hidden

这是Springdoc OpenAPI/Knife4j 体系下的一个“隐藏兼容性问题”的典型现象。


原理解释

1. @Hidden 注解的作用

  • @Hidden 是 io.swagger.v3.oas.annotations.Hidden,用于告诉 OpenAPI/Swagger/Knife4j 不要扫描/生成该类或方法的接口文档。
  • 你加在异常类或异常处理类(如 @ControllerAdvice)上,意味着Knife4j/Springdoc 在生成文档时会跳过这些类。

2. 你的异常类/处理器导致了文档生成时的反射冲突

  • Springdoc/Knife4j 在扫描所有 @ControllerAdvice 或异常处理相关类时,会用到 ControllerAdviceBean 的构造方法。
  • 由于 Spring Boot 3.4.x/Spring 6.1+ 里 ControllerAdviceBean 的构造方法有变动,而 Knife4j/Springdoc 依赖的 spring-web 版本较低,反射时找不到新方法,就抛出了 NoSuchMethodError。
  • 你加了 @Hidden,Knife4j/Springdoc 就不会再扫描你的异常类,也就不会触发反射冲突,自然不会报错。

3. 本质是“规避”了不兼容的扫描

  • 这不是根本解决,只是让文档生成时跳过了有兼容性问题的类,所以不再报错。
  • 你的异常处理功能依然正常,只是接口文档里不会再显示这些异常类的相关信息。

结论

  • 加 @Hidden 是一种“绕过”兼容性问题的办法,让文档生成工具不再扫描有兼容性问题的类,从而避免 NoSuchMethodError。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值