【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版本不兼容|中篇

相关推荐
云烟成雨TD7 分钟前
Spring AI Alibaba 1.x 系列【52】Interrupts 中断机制:节点执行前后静态中断
java·人工智能·spring
疯狂成瘾者17 分钟前
Spring Boot 项目中的 SMTP 邮件验证码服务技术解析
java·spring boot·后端
y = xⁿ20 分钟前
Java并发八股学习日记
java·开发语言·学习
xifangge202527 分钟前
【深度排障】从 OS 底层寻址剖析 javac 不是内部或外部命令 核心报错:变量空间隔离与自动化部署终极范式
java·开发语言·jdk·自动化
肖恩想要年薪百万32 分钟前
JSP中常用JSTL标签
java·开发语言·状态模式
程序员清风1 小时前
AI开发岗该如何准备面试?
java·后端·面试
笨拙的老猴子1 小时前
Spring AI 实战教程(七):Agent 智能体 —— 用电商购物助手学透自主规划与工具执行
java·人工智能·spring
月落归舟1 小时前
深入解析Java基础之基础
java·开发语言
折哥的程序人生 · 物流技术专研1 小时前
《Java 100 天进阶之路》第20篇:Java初始化、构造器、对象创建的过程
java·开发语言·后端·面试
电魂泡哥1 小时前
CMS垃圾回收
java·jvm·算法