引入springboot3.4后v3/api-docs接口报Handler dispatch failed: java.lang.NoSuchMethodError
Closed this issue · 7 comments
描述
knife4j-openapi3-jakarta-spring-boot-starter+springboot3.4后请求/v3/api-docs报如下异常:
Handler dispatch failed: java.lang.NoSuchMethodError: 'void org.springframework.web.method.ControllerAdviceBean.<init>(java.lang.Object)
分析错误后发现:
org.springdoc.core.service.GenericResponseService.lambda$getGenericMapResponse$8(GenericResponseService.java:702)
此处代码:
new ControllerAdviceBean(controllerAdviceInfo.getControllerAdvice()).isApplicableToBeanType(beanType))
用到了ControllerAdviceBean类的一个参数的构造函数,但是springboot3.4已经移除,只有一个三个构造函数的参数:
public ControllerAdviceBean(String beanName, BeanFactory beanFactory, ControllerAdvice controllerAdvice) {
能不能快速兼容一下发一个版本,谢谢
你这个问题不是knife4j导致的,而是旧版本的springdoc的问题,升级到springdoc-2.7.0这个问题会消失,但会出现新问题。新问题出现在库knife4j-openapi3-jakarta-spring-boot-starter的Knife4jOpenApiCustomizer类第75行,由于springdoc的SpringDocConfigProperties.getGroupConfigs返回类型由List变为Set,导致抛出NoSuchMethod异常。解决方法也很简单,下载4.5.0的源码,升级pom中的版本到你希望的版本,重新编译即可。我编译了一个自己的4.5.1版本,目前为止文档都是正常的,当然,不排除其他地方还可能出现类似的兼容性错误,但那也只有发生了才会知道。
最后,感谢作者提供了一个这么好用的工具,我已经用了快5年了
<dependency>
<groupId>com.github.xingfudeshi</groupId>
<artifactId>knife4j-openapi3-jakarta-spring-boot-starter</artifactId>
<version>4.6.0</version>
</dependency>
可以先用这个
<dependency> <groupId>com.github.xingfudeshi</groupId> <artifactId>knife4j-openapi3-jakarta-spring-boot-starter</artifactId> <version>4.6.0</version> </dependency>
可以先用这个
好的,谢谢。这个是正式版本还是临时版本,我在maven仓库里面没看到
<dependency> <groupId>com.github.xingfudeshi</groupId> <artifactId>knife4j-openapi3-jakarta-spring-boot-starter</artifactId> <version>4.6.0</version> </dependency>
可以先用这个
好的,谢谢。这个是正式版本还是临时版本,我在maven仓库里面没看到
这个是我在原版源码上改的,并发布在maven上,方便自己和大家使用.今天刚发布,同步可能需要最长48小时.目前,可以在central仓库看到[1]
<dependency> <groupId>com.github.xingfudeshi</groupId> <artifactId>knife4j-openapi3-jakarta-spring-boot-starter</artifactId> <version>4.6.0</version> </dependency>
可以先用这个
谁叫你改包名,搞到我项目全部都要改包名为“幸福的事【xingfudeshi】”
<dependency> <groupId>com.github.xingfudeshi</groupId> <artifactId>knife4j-openapi3-jakarta-spring-boot-starter</artifactId> <version>4.6.0</version> </dependency>
可以先用这个
- 原先设置的鉴权失效了
2.文档路径有重复的,tag标签是正确的,api路径重复了
我遇到了这两个问题,退回到springboot3.3 用原版本就正常了。