【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,显然运行环境低于编译环境
【Java异常】完美解决this version of the Java Runtime only recognizes class file versions up to xx.0异常_第1张图片

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

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

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

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

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

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

【Java异常】完美解决this version of the Java Runtime only recognizes class file versions up to xx.0异常_第2张图片
这我就很好奇了,为什么啊,明明我的项目没有用到过JDK17的东西,可为什么它会用JDK17来编译这个文件呢?

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

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

【Java异常】完美解决this version of the Java Runtime only recognizes class file versions up to xx.0异常_第3张图片
这哥们6月13号更新了一波版本,而在此之前我们的最后一次部署是6月5日!

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

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

【Java异常】完美解决this version of the Java Runtime only recognizes class file versions up to xx.0异常_第4张图片
哎呦我的个乖乖,这个问题整了老半天,真是服了!

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

你可能感兴趣的:(日常分享,Java学习,java,开发语言)