springboot 整合 knife4j 的时候,启动报错 Caused by: java.lang.ClassNotFoundException: javax.servlet.Filter。
版本信息:
springboot:3.2.4
jdk:17
knife4j:4.5.0
发现项目依赖存在问题:
<!-- knife4j依赖-->
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>knife4j-openapi3-spring-boot-starter</artifactId>
<version>4.5.0</version>
</dependency>
后来发现得用 knife4j-openapi3-jakarta-spring-boot-starter 依赖,才可以:
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>knife4j-openapi3-jakarta-spring-boot-starter</artifactId>
<version>4.5.0</version>
</dependency>
更换依赖后,就可以了。
一、这两个依赖的区别
knife4j-openapi3-jakarta-spring-boot-starter和knife4j-openapi3-spring-boot-starter是Knife4j的两个不同版本的OpenAPI 3.0的Spring Boot启动器。
knife4j-openapi3-spring-boot-starter是针对使用Spring Boot 2.x的版本。
knife4j-openapi3-jakarta-spring-boot-starter是针对使用Spring Boot 3.x及以上版本,也就是基于Jakarta EE的版本。
二、springboot3.x 更换了 Jakarta EE
sprignboot3.x 弃用了 javae EE 改用 Jakarta EE,而 Jakarta EE 并没有 javax.servlet.Filter 包,这就导致我在 springboot3 项目中导入 knife4j-openapi3-spring-boot-starter 依赖后启动,报错缺少 javax.servlet.Filter 。