【Java异常】完美解决this version of the Java Runtime only recognizes class file versions up to xx.0异常

哈喽各位,我是小白。时隔多日我又回来啦!

最近在部署项目后,发现线上业务数据都变成了默认值0,而且这个现象,仅仅出现在当次上线后生成的数据中

于是我去扫了一眼日志,发现如下报错

Caused by:
java.lang.UnsupportedClassVersionError: org/eclipse/core/resources/IResource has been 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 55.0

翻译过来就是说类文件的编译环境是61.0,而运行环境为55.0,显然运行环境低于编译环境

于是当发现该问题时,我迅速排查了容器的jdk版本、项目中Maven编译使用的jdk版本等,发现均为JDK11

这个时候我就很纳闷了,版本是一致的,为什么会突然报这个错误呢?

百度,Google了一遍,该用的方法都用了,可还是这个问题!

正当我百思不得其解时,我看到了报错的前半部分:


我项目中并未使用 org/eclipse/core/resources/IResource 类/接口,可是却报了这个类的编译错误呢?

我顺势在项目中搜了一下这个类,不搜不知道,一搜才发现果真这个类是JDK17所编译的。


这我就很好奇了,为什么啊,明明我的项目没有用到过JDK17的东西,可为什么它会用JDK17来编译这个文件呢?

顺着这个思路,我就去看了项目的 pom.xml 文件,这看完我才知道,原来引用这个的pom版本写了个版本区间,每次都会取最高的版本

为了验证这个想法,我又去Maven仓库搜了一下。嘿,您猜怎么着?还真是!!!


这哥们6月13号更新了一波版本,而在此之前我们的最后一次部署是6月5日!

哎呦这个老6,真的是服了you!

为了验证这个问题,我把该依赖的版本号做了一次指定,将代码本地编译,嘿,果然是JDK11啊

请添加图片描述
哎呦我的个乖乖,这个问题整了老半天,真是服了!

解决了,改了个pom依赖版本号,哪有什么改 <properties> 标签这说,净瞎扯!

文章出处登录后可见!

已经登录?立即刷新

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
扎眼的阳光的头像扎眼的阳光普通用户
上一篇 2023年12月8日
下一篇 2023年12月8日

相关推荐