springboot版本和JDK版本的依赖关系
通过maven构建Java项目或者使用源代码进行Java编译时,常常遇到JDK版本和Springboot版本不匹配的问题,导致编译失败,比如出现如下错误:
org/springframework/beans/factory/InitializingBean.class
[ERROR] 类文件具有错误的版本 61.0, 应为 55.0
[ERROR] 请删除该文件或确保该文件位于正确的类路径子目录中。
/org/springframework/boot/autoconfigure/AutoConfigureAfter.class
[ERROR] 类文件具有错误的版本 61.0, 应为 55.0
[ERROR] 请删除该文件或确保该文件位于正确的类路径子目录中。
这类错误的原因是:你本地的jdk版本低,而代码里依赖的springboot版本高导致的错误,解决这个问题要么提升jdk版本,要么降低springboot版本。那么如何查看springboot版本与jdk版本的对应关系呢?
一、如何查看springboot依赖的JDK版本
1、打开spring官方网站
进入spring官方网站https://spring.io/,点击菜单Projects\Spring Boot,然后点击LEARN页签,查看主流的springboot版本。
版本标识的意义
CURRENT:代表了当前版本,最新发布版本,里程碑版本。
GA:通用正式发布版本,同release。
SNAPSHOT:快照版本,可用但非稳定版本。
PRE:预览版本。
M版本:M1,M2,M3中的M是milestone的简写,这个单词是里程碑的意思。
Alpha:也被称为内部测试版或预览版,这些版本通常不会对外部用户公开,因为它们可能包含许多尚未修复的漏洞和不完整的功能。通常只有开发团队和其他内部相关人士才能访问和使用 Alpha 版本。
Beta:是一种公开测试版,位于 Alpha 版本之后。这个阶段的版本通常会加入新功能,并且相较于 Alpha 版本来说会更加稳定。Beta 版本主要面向特定的用户群体进行测试,如合作伙伴、潜在客户或早期采用者。
2、查看Reference Doc.
比如我们想查看spring boot3.0.13版本,点击Reference Doc.进入参考详情页面。
3、点击左侧的 Getting Started菜单
4、接着点击左侧的2. System Requirements菜单
可以看到Spring Boot版本对Java jdk版本的要求说明:
Spring Boot 3.0.13 requires Java 17 and is compatible up to and including Java 21. Spring Framework 6.0.14 or above is also required.
Spring Boot 3.0.13需要Java 17,并且兼容Java 21(包括Java 21)。还需要Spring Framework 6.0.14或更高版本。
二、主流的springboot和jdk版本的对应关系
序号 |
Spring Boot 版本 |
Jdk版本 |
Spring Framework 版本 |
1 |
Spring Boot 2.7.18 |
Java Jdk 8版本—21版本 |
Spring Framework 5.3.31+ |
2 |
Spring Boot 3.0.13 |
Java Jdk 17版本-21版本 |
Spring Framework 6.0.14+ |
3 |
Spring Boot 3.1.8 |
Java Jdk 17版本-21版本 |
Spring Framework 6.0.16+ |
4 |
Spring Boot 3.2.2 |
Java Jdk 17版本-21版本 |
Spring Framework 6.0.13+ |
5 |
Spring Boot 3.3.0-M1 |
Java Jdk 17版本-21版本 |
Spring Framework 6.0.13+ |
可以看到,Spring Boot 3以上版本至少得依赖JDK17版本,如果项目中要求使用JDK8版本,那么只能使用Spring Boot 2版本了。
Spring Boot 2和Spring Boot 3有什么区别
1.最低环境的区别
Java版本:SpringBoot2的最低版本要求为Java8,支持Java9;而SpringBoot3决定使用Java17作为最低版本,并支持Java19。
Spring Framework 版本: SpringBoot2基于Spring Framework5开发;而SpringBoot3构建基于Spring Framework6之上。
2.GraalVM支持的区别
相比SpringBoot2,SpringBoot3的Spring Native也是升级的一个重大特性,支持使用GraalVM将Spring的应用程序编译成本地可执行的镜像文件,可以显著提升启动速度、峰值性能以及减少内存使用。
3.图片Banner支持的区别
在SpringBoot2中,自定义Banner支持图片类型;而现在Spring Boot3自定义Banner只支持文本类型(banner.txt),不再支持图片类型。
4.依赖项的区别
相比SpringBoot2,Spring Boot3.0.0-M1删除了对一些附加依赖项的支持,包括Apache ActiveMQ、Atomikos、EhCache2和HazelCast3。Jersey是另一个值得注意的弃用,在它提供对Spring Framework6的支持之前已被删除。
除了上述内容外,相比SpringBoot2,SpringBoot3还增加了很多其它的新特性,如:Java EE已经变更为Jakarta EE、Log4j2增强、三方包升级等。