一.问题描述:
Knife4j在使用不当时可能会出现如下错误:
1.控制台显示启动类启动失败并出现空指针异常。
2.浏览器显示Knife4j显示空指针异常,前端服务器显示404。
二.解决方案
首先保证代码正确无误,出现两种错误的原因都有可能是maven版本不匹配,(个人出现第一种错误的原因是spring版本太高:2.7.5,出现第二种错误是因为Knife4j版本太低:3.0以下)。
经查阅,Spring Boot 2.6 及以上的版本,Knife4j3.0.0
以上可能不完全兼容。因此,解决方案就是降低spring-boot-starter-parent的版本,升高Knife4j的版本,或是使用兼容性更高的knife4j-openapi2。
经测试,以下的两种版本方案将不再报错,供各位参考:
方案一
<groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.3.6.RELEASE</version>
----------------------------------------------------------------------------------------------------------
<groupId>com.github.xiaoymin</groupId> <artifactId>knife4j-spring-boot-starter</artifactId> <version>3.0.3</version>
方案二
<groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.7.12</version>
-------------------------------------------------------------------------------------------------------------------
<dependency> <groupId>com.github.xiaoymin</groupId> <artifactId>knife4j-openapi2-spring-boot-starter</artifactId> <version>4.1.0</version> </dependency>
注意:@EnableSwagger2WebMvc
注解在Knife4j 3.x 及以上版本 已经支持自动配置,不再需要显式地添加 @EnableSwagger2WebMvc
注解。这意味着当你引入 Knife4j 相关依赖时,Knife4j 会自动配置并集成到你的 Spring Boot 应用中。