Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

引入springboot3.4后v3/api-docs接口报Handler dispatch failed: java.lang.NoSuchMethodError #867

Closed
mingyang66 opened this issue Nov 29, 2024 · 10 comments

Comments

@mingyang66
Copy link

描述
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) {

能不能快速兼容一下发一个版本,谢谢

@silvericestorm
Copy link

你这个问题不是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年了

@xingfudeshi
Copy link

<dependency>
            <groupId>com.github.xingfudeshi</groupId>
            <artifactId>knife4j-openapi3-jakarta-spring-boot-starter</artifactId>
            <version>4.6.0</version>
 </dependency>

可以先用这个

@mingyang66
Copy link
Author

<dependency>
            <groupId>com.github.xingfudeshi</groupId>
            <artifactId>knife4j-openapi3-jakarta-spring-boot-starter</artifactId>
            <version>4.6.0</version>
 </dependency>

可以先用这个

好的,谢谢。这个是正式版本还是临时版本,我在maven仓库里面没看到

@xingfudeshi
Copy link

<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]

[1]https://central.sonatype.com/artifact/com.github.xingfudeshi/knife4j-openapi3-jakarta-spring-boot-starter/overview

@rayliang123
Copy link

<dependency>
            <groupId>com.github.xingfudeshi</groupId>
            <artifactId>knife4j-openapi3-jakarta-spring-boot-starter</artifactId>
            <version>4.6.0</version>
 </dependency>

可以先用这个

谁叫你改包名,搞到我项目全部都要改包名为“幸福的事【xingfudeshi】”

@xingfudeshi
Copy link

xingfudeshi commented Dec 6, 2024 via email

@java001
Copy link

java001 commented Dec 18, 2024

<dependency>
            <groupId>com.github.xingfudeshi</groupId>
            <artifactId>knife4j-openapi3-jakarta-spring-boot-starter</artifactId>
            <version>4.6.0</version>
 </dependency>

可以先用这个

  1. 原先设置的鉴权失效了
    2.文档路径有重复的,tag标签是正确的,api路径重复了
    我遇到了这两个问题,退回到springboot3.3 用原版本就正常了。

@yeguoz
Copy link

yeguoz commented Jan 3, 2025

<dependency>
            <groupId>com.github.xingfudeshi</groupId>
            <artifactId>knife4j-openapi3-jakarta-spring-boot-starter</artifactId>
            <version>4.6.0</version>
 </dependency>

可以先用这个

可以了,感谢

@ilaotan
Copy link

ilaotan commented Feb 14, 2025

老老实实自己打私服吧 别用这个 包名都换了 以后切回来麻烦

@xingfudeshi
Copy link

老老实实自己打私服吧 别用这个 包名都换了 以后切回来麻烦

包名更换是因为发布到maven中央仓库,需要用不同namespace,否则会冲突。不想用可以不用。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

7 participants