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

相关推荐
古法老登瞎折腾2 小时前
大数据智能运维实战(十一):运维 MCP 的工程化——权限、限流、审计与错误处理
java·大数据·运维·spring ai·mcp
智能运维指南3 小时前
研制过程“两张皮“怎么破:研制一体化支撑平台的定位、能力边界与落地前提
java·前端·人工智能·嘉为蓝鲸
yz_aiks3 小时前
Spring AI 2.1 ChatMemory 已过时用什么替代:迁移到 Session Memory 实战(JDBC 存储与会话压缩)
java·spring boot·大模型·ai agent·spring ai
金銀銅鐵3 小时前
[Java] 用 GUI 展示 EnumMap 增删键值对时的内部变化
java·后端·ai编程
学长毕设4 小时前
基于SpringBoot的上门洗车服务系统设计与实现
java·spring boot·后端
jason成都4 小时前
RTKLIB-Java 多基线联合RTK:FIX率从0%到91.5%的三层根因修复
java·gnss·rtklib·rtklib_java
鱼宵4 小时前
Stream 终端操作一次讲透:collect、count、reduce 怎么选
java·stream·终端操作
白山编程大哥4 小时前
Java 后端如何优雅地把 List 集合返回给前端
java·前端·list
Linux运维技术栈4 小时前
CVE-2026-91403 高危漏洞修复:Rocky Linux 9 多版本 JDK 环境清理实操
java·linux·运维
On The Road :4 小时前
Java 多线程详解:从入门到线程安全
java·python·安全