项目打包之java compiled by a more recent version of the Java Runtime (class file version 61.0)
2024年3月13日大约 2 分钟
背景
使用2023年最新版本的idea编译器、JDK1.8,可以正常启动项目SpringBoot项目,使用maven插件打包项目时报错。
遇到的问题:
报错:
java compiled by a more recent version of the Java Runtime (class file version 61.0), this version of the Java Runtime only recognizes class file versions up to 52.0
原因: 最开始我想到的是,官方最新版本编译器强制使用JDK17,
后续验证,才发现并不是这样,你也能正常引用jdk1.8。
如果没有指定 spring-boot-maven-plugin 的版本,Maven 会使用最新版本的插件进行打包。但是,最新版本的插件可能不适用于 1.8 的 JDK
解决方法:
1、检查idea编译器中的jdk版本(编译版本) 2、检查pom文件中的maven插件版本 (推荐)
可能在使用maven插件版本时,你并没有指定maven插件版本,默认引用的就是最新版本的maven插件。 这也是在升级项目时常遇到的问题,之前使用项目是可以正常打包,但后来升级了项目之后,项目可以正常打包,但到打包环节就出现了问题。
指定 spring-boot-maven-plugin 的版本
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>2.7.0</version>
</plugin>
</plugins>
</build>
附件
具体报错:
org/springframework/boot/maven/RepackageMojo has been compiled by a more recent
java compiled by a more recent version of the Java Runtime (class file version 61.0), this version of the Java Runtime only recognizes class file versions up to 52.0
参考:
Java异常】完美解决this version of the Java Runtime only recognizes class file versions up to xx.0异常
Java Runtime (class file version 61.0), this version of the Java Runtime only recognizes class file
someService required a bean named 'entityManagerFactory' that could not be found