查看依赖第三方jar最低要求运行的jdk版本

最近在比较阿里巴巴的easyexcel和easypoi的excel导出功能哪个强大。两者的demo我都是写在同一个工程里面的,easyexcel的demo是先写的,使用起来方便简洁。然后开始写easypoi的demo时,首先出现了依赖下载不了,依赖能下载之后,还出现了下面的乱七八糟的问题:

Handler dispatch failed; nested exception is java.lang.NoClassDefFoundError: cn/afterturn/easypoi/excel/entity/ExportParams

Unsupported major.minor version 52.0

刚开始我是以为easypoi的依赖包没有完整下下来,后来检查发现应该全部下载了。后来我想是不是依赖没有添加全,去easypoi的官方网站看,我的依赖使用应该是没有问题的,但是我还是把easypoi的版本从4.0.0降到了3.30,但是demo运行起来还是报错。后来我想到easyexcel也是依赖poi的,是不是他俩又版本依赖的冲突。于是我把easyexcel给注释了,于是我就成功了!~~我嘞个去!!!!!
出现第一个错误就是因为easyexcel和easypoi的依赖有冲突。出现第二个错误是英文,使用的easypoi的版本过高,我使用的是easypoi4.0.0,他需要的jdk的版本是jdk8以上的。

那如何查看第三方依赖最低要求运行的jdk版本呢?

  • 在第三方jar包下会存在一个META-INF目录,该目录下有一个MANIFEST.MF文件,这个文件以键值对的形式存储一些关于jar包的关键信息。
    下面我以easypoi-base的MANIFEST.MF文件做为示例:
Manifest-Version: 1.0
Archiver-Version: Plexus Archiver
Built-By: jueyue
Created-By: Apache Maven 3.1.1
Build-Jdk: 1.8.0_144

可是一个.jar文件中,如果没有这个字段,就必须通过下面一种方法来查看

  • 通过反编译.class文件来查看
    解压.jar包,能得到.class文件。用JDK自带的javap反编译.class文件,用如下命令:
javap -verbose Configuration.class

#查看得到的信息中,major version属性的内容,如下
major version: 52

说明这个.class文件是由JDK1.8编译得到的。

  • Java 9 uses major version 53
  • J2SE 8.0 = 52(0x33 hex)
  • J2SE 7.0 = 51(0x32 hex)
  • J2SE 6.0 = 50 (0x32 hex)
  • J2SE 5.0 = 49 (0x31 hex)
  • JDK 1.4 = 48 (0x30 hex)
  • JDK 1.3 = 47 (0x2F hex)
  • JDK 1.2 = 46 (0x2E hex)
  • JDK 1.1 = 45 (0x2D hex)

注意:一个.jar包中可能有多个.class文件,每个.class的JDK版本可能会不一样(编译器多个项目设置不同)

我电脑上安装的是jdk7。所以解决办法是删掉easyexcel的依赖,使用easypoi运行和自己jdk相同版本的就行了

相关文章

此处评论已关闭