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

相关推荐
江湖有缘3 小时前
本地化JSON 处理新方案:基于 Docker的JSON Hero部署全记录
java·docker·json
御坂10101号3 小时前
「2>&1」是什么意思?半个世纪的 Unix 谜题
java·数据库·bash·unix
韩立学长3 小时前
基于Springboot校园志愿者服务平台77pz7812(程序、源码、数据库、调试部署方案及开发环境)系统界面展示及获取方式置于文档末尾,可供参考。
数据库·spring boot·后端
Java基基3 小时前
Spring让Java慢了30倍,JIT、AOT等让Java比Python快13倍,比C慢17%
java·开发语言·后端·spring
future02103 小时前
Spring AOP核心机制:代理与拦截揭秘
java·开发语言·spring·面试·aop
qq_12498707533 小时前
基于SpringBoot微信小程序的智能在线预约挂号系统(源码+论文+部署+安装)
spring boot·后端·微信小程序·毕业设计·计算机毕设·毕业设计源码
代码探秘者3 小时前
【Redis】分布式锁深度解析:实现、可重入、主从一致性与强一致方案
java·数据库·redis·分布式·缓存·面试
小马爱打代码3 小时前
SpringBoot + 异地多活 + 消息回放:金融级数据一致性容灾架构设计与演练
spring boot·金融
JAVA学习通4 小时前
InnoDB 存储引擎
java·数据库·mysql