一、背景描述
Spring官网:Spring | Home
通过Spring官网初始化一个新的SpringBoot项目,如下图所示。
关键信息:maven项目,Java语言,SpringBoot版本号,项目信息,打包方式,Java版本,然后点击下边最左侧的 GENERATE CTRL + 回车,即可生成一个SpringBoot项目。
下载后使用IDEA打开,将maven依赖下载好,JDK版本选择Java8(本地电脑只有一个Java1.8),没有报错,启动项目后,结果启动失败,报错信息如下:
java: 无法访问org.springframework.boot.SpringApplication 错误的类文件: /D:/Repository/org/springframework/boot/spring-boot/3.0.5/spring-boot-3.0.5.jar!/org/springframework/boot/SpringApplication.class 类文件具有错误的版本 61.0, 应为 52.0 请删除该文件或确保该文件位于正确的类路径子目录中。
理论上来说,从Spring官网初始化的一个项目,没有添加任何代码,不应该报错。但是,实际上很莫名其妙的出现报错信息。
二、报错原因
报错信息里所说的类文件版本指的是java class file version,java类文件版本。其实这个该版本号与jdk版本号是存在对应关系,具体来说61.0对应jdk17,52.0对应jdk8。
完整对应关系参见:https://stackoverflow.com/questions/9170832/list-of-java-class-file-format-major-version-numbers ,访问可能会比较慢,我已经截图了,看下图即可。
出现上述错误主要是类文件版本与JDK版本号不对应导致的。解决这个问题很简单,把两者的关系对应上即可。
三、解决方案
两种方案:一是降低类文件版本号(即降低SpringBoot版本号),二是提升JDK版本号。
拿我自己初始化的这个SpringBoot项目来说,我选择的SpringBoot版本3.0.5,该版本的SpringBoot所需的JDK版本是JDK17,而我本地电脑只安装了一个JDK8的运行环境,所以才会报这个错误。
从Spring官网查看SpringBoot版本号,查看地址:https://spring.io/projects/spring-boot#support ,降低版本号后项目正常启动成功。我选择的是 2.1.5.RELEASE。
完结!