class file has wrong version 55.0, should be 52.0

前言

  • 今早更新代码,准备编译启动启动时,项目报class file has wrong version 55.0, should be 52.0异常,如下图所示。
    在这里插入图片描述

分析

  • 错误提示:类文件有错误的版本 55.0,应该是 52.0。这里的55和52是主版本(Major Version),主版本(Major Version)和JDK版本的对应关系如下表所示。
主版本(Major Version)对应JDK版本
52JDK 8
53JDK 9
54JDK 10
55JDK 11

确认Jar的主版本

  • 我们可以把Jar包用解压软件,得到class文件。使用javap -v xxx翻译生成汇编代码输出行号、局部变量表信息、常量池、版本号等信息。
    在这里插入图片描述
  • 或者使用HexView也能查看主版本号,如下图所示。
    在这里插入图片描述

0x0037转为10进制就是55

确认问题

  • 我们看到主版本是55,对应上表就是JDK 11,这样局势就明朗了。

  • 提示上说这个class(或者说这个Jar)用的是JDK 11编译出来的,而我本地的是JDK 8,所以低版本没能力兼容高版本的东西导致了报错。

解决方案

  • 第一种:不要使用这个Jar或者里面的任何类。
  • 第二种:升级自己的JDK。
  • 第三种:有条件的可以把源码下载下来,用自己本地JDK,编译出来Jar,这样就和自己本来JDK兼容了。

posted on 2022-05-27 08:47  愤怒的苹果ext  阅读(3927)  评论(0编辑  收藏  举报

导航