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

相关推荐
这个DBA有点耶2 小时前
SQL调优进阶:从“优化一条SQL”到“优化一个系统”的思维升级
java·大数据·数据库·sql·程序人生·dba·改行学it
csdn2015_3 小时前
springboot读取配置的方法
java·spring boot·spring
AOwhisky3 小时前
下一代容器来了?Docker 宣布原生支持 WebAssembly
java·运维·docker·容器·rust·wasm
云云只是个程序马喽5 小时前
海外短剧平台搭建方案:私有化源码系统选型|云微短剧系统技术架构拆解
java·php
C137的本贾尼6 小时前
第七篇:消息队列(MQ)——就是个带存储的异步通信管道
java·开发语言·中间件
Flittly6 小时前
【AgentScope Java新手村系列】(19)多模态-图像音频视频
java·spring boot·spring
Javatutouhouduan6 小时前
国内大厂Java面试高频题库(2026突击版)
java·架构师·java面试·java面试题·后端开发·java程序员·java八股文
Tim_106 小时前
【C++】017、new/delete与malloc/free的区别
java·数据结构·算法
青山木6 小时前
一把 Redis 分布式锁,踩透四个坑:锁争抢、僵尸锁、锁过期、锁丢失
java·数据库·redis·后端
Java内核笔记7 小时前
万字避坑!Spring Boot 3.x 升 4.0 最全升级指南(附 Migration Checklist,建议收藏⭐)
java·后端