【bugfix】从jar包找到最低jdk、jre版本

问题背景

当项目中引用高版本类库时,可能导致线程down了,由于线上(1.6)线下(1.8)jdk版本不同,引入了新的jar包,所以试着排查新jar包的类版本。

排查过程

1.解压jar包

jar -xvf kafka-clients-0.10.0.0.jar

会有一系列class文件,选择./org/apache/kafka/clients/producer路径下的一个class类文件

2.javap程序解析类文件并提取版本

javap -v KafkaProducer.class |grep version -C 3

如图,发现该类的主版本号是51,对应的jdk版本是1.7

  • 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)

由于线上是1.6,低于该类的版本号,类版本兼容

出现 java.lang.UnsupportedClassVersionError: org/springframework/kafka/core/ProducerFactory : Unsupported major.minor version 51.0

class file has wrong version 51.0, should be 50.0,这种问题

 
发布了92 篇原创文章 · 获赞 14 · 访问量 5827

猜你喜欢

转载自blog.csdn.net/sarafina527/article/details/103600233
今日推荐