【IDEA | springboot | knife4j】knife4j与springboot 2.7.*版本以及jdk8不对应问题

文章目录

问题

  • D:\project\spring_project\lease\web\web-admin\src\main\java\com\atguigu\lease\web\admin\custom*config\Knife4jConfiguration.java:6:33 *
    *

    复制代码
        	问题所在:`config\Knife4jConfiguration.java:6:33`
    • 对应依赖坐标knife4j-openapi3-jakarta-spring-boot-starter
  • java: 无法访问org.springdoc.core.models.GroupedOpenApi 错误的类文件: /D:/dev...perSoftware/Environment/maven/repository/org/springdoc/springdoc-openapi-starter-common/2.3.0/springdoc-openapi-starter-common-2.3.0.jar!/org/springdoc/core/models/GroupedOpenApi.class 类文件具有错误的版本 61.0, 应为 52.0 请删除该文件或确保该文件位于正确的类路径子目录中。

    • 具有错误的版本 61.0, 应为 52.0 :x项目运行jdk8,而knife4j的版本对应17,不兼容
    • 哪个依赖导致的springdoc-openapi-starter-common-2.3.0.jar这个依赖来自:Springdoc OpenAPI。--knife4j-openapi3-jakarta-spring-boot-starter

现在用的版本knife4j 4.5.0,而 Knife4j 4.x 是基于 SpringBoot3 的。SpringBoot3 要求:Java 17+
但是本项目是2.7.*,jdk是8。降低 Knife4j 版本:原来的<knife4j.version>4.5.0</knife4j.version>降低为<knife4j.version>4.3.0</knife4j.version>.

why


反思?

那么我在今后怎么去避免这个问题的出现呢?在这个大数据大模型智能时代?我怎么操作?怎么思考?批判性思考

?

先确定核心框架版本 → 再查它支持的 JDK → 再选兼容的第三方依赖版本。

本次出错

SpringBoot 2.7

JDK 8

Knife4j 4.5

而 Knife4j 4.5 → SpringBoot3 → JDK17,所以不兼容。

处理

在 Spring 项目里,Spring Boot 是核心版本。

所以

第一步,确定springboot的版本

xml 复制代码
<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.7.3</version>
</parent>

只要确定这个版本,很多依赖版本其实已经确定了。

第二步:查 Spring Boot 支持的 JDK

这个需要去官方查找。

官方文档:Spring Boot

Boot 官方支

持表大致如下

第三步:查 Spring Boot 管理的依赖版本(最重要)

SpringBoot有一个 依赖版本管理表:spring-boot-dependencies

比如,2.7.3:org.springframework.boot:spring-boot-dependencies:2.7.3.

这里面已经规定了:

mysql

jackson

logback

tomcat

redis

junit

等 100多个依赖的版本。

可以在 Maven 中查看:mvn dependency:tree或者在 Maven 仓库网站查。

附上最常用的查询网站

Maven Central Repository 是全球最广泛使用的 Java 生态包管理与分发中心,由 Sonatype 维护与运营。它是

Apache Maven、Gradle 等构建工具的默认依赖仓库,为开发者提供数百万个开源 Java

库及构件(artifact)的下载与分发服务


Maven Central Repository 是全球最广泛使用的 Java 生态包管理与分发中心,由 Sonatype 维护与运营。它是

Apache Maven、Gradle 等构建工具的默认依赖仓库,为开发者提供数百万个开源 Java

库及构件(artifact)的下载与分发服务

可以查:

依赖版本

发布时间

依赖关系

优点:

可以看到 依赖关系

可以看到 JDK要求

可以看到 兼容版本

  • x GitHub 官方文档

很多框架会写兼容表,例如:

Knife4j

官方 README 会写:Boot2 → Knife4j 3.x

Boot3 → Knife4j 4.x

一个非常实用的小技巧(很多人不知道)

在 **IntelliJ IDEA 中:当你写:IDEA 会自动提示 兼容版本。

如果版本不兼容,通常 Maven 编译就会报错。

@@@

最稳的方式(企业常用)

最稳的方式(企业常用)
很多公司会 固定技术栈版本:

项目都按这个模板来。

xml 复制代码
JDK 8
SpringBoot 2.7.12
MyBatisPlus 3.5.3
Knife4j 4.3
MySQL 8
Redis 6

总结

参考 思考思路

版本选择流程(非常重要)。以后做项目时建议这样做:选 SpringBoot:

  1. 选 SpringBoot:
  2. 选 JDK:
  3. 查依赖版本

进一步解决

knife4j版本不兼容|中篇

相关推荐
daidaidaiyu5 小时前
ThingsBoard 集群的核心逻辑源码分析
java
我可能是个假开发5 小时前
FTP Unicode 文件名导致 `550` 的问题分析与解决方案
java·开发语言·spring
caoerzhong6 小时前
中小企业上 WMS 该先上哪几块:JeeWMS 开源 Java 仓库管理系统的分批上线清单
java·python·开源
【JAVA】玩家7 小时前
Spring核心原理全解析:从零到生产实战
java·后端·spring
Wang's Blog7 小时前
Java框架 SpringCloud 快速入门: 实现 Feign 最佳实践(抽取方式)
java·spring cloud
MandalaO_O8 小时前
IDEA 开发(快捷键 + 调试 + 序列化)
java·ide·intellij-idea
xiaoqiMikko9 小时前
JVM 线上排查实战(七):jps 看不见它、jstack 连不上它,可它明明活得好好的
java·jvm
狼爷9 小时前
Rust/Go/Java/Python/PHP 大比拼:负载下后端框架到底差多少?
java·后端·编程语言
念何架构之路9 小时前
zap扩展生态与总结
java·前端·数据库
第七页独白10 小时前
汽车零件厂如何通过 QMS 真正落地 IATF 16949——QMS软件系统:品质检验-内审稽核-8d客诉管理:全星质量管理软件系统
java·前端·数据库