class版本不兼容错误原因分析

114 篇文章 2 订阅
113 篇文章 1 订阅

在JDK 1.6工程中使用外部JAR包的时候经常碰到这样的问题:Unsupported major.minor version 51.0。

为了解决这个问题,首先我们要明白:major.minor version的含义。

major.minor version是在class文件中定义的,表示class文件的版本。例如:

JDK 1.7 –target 1.7 版本号51.0

JDK 1.7 –target 1.6 版本号50.0

JDK 1.7 –target 1.5 版本号49.0

其中,-target指定生成的class文件将保证和哪个版本的虚拟机进行兼容。我们可以通过-target 1.7来保证生成的class文件能在1.7虚拟机上进行运行,但是1.6的虚拟机就不能保证了。在编译过程中,还经常会使用到-source参数,-source 指定用哪个版本的编译器对java源码进行编译。例如:javac -source 1.7 -target 1.7 Test.java

在class文件中,第五字节和第六字节是次版本号,第七字节和第八字节是主版本号。高版本的JDK能向下兼容之前版本的class文件,但是不能运行以后版本的class文件。例如JDK 1.7版本,可生成的class文件主版本号的最大值是51.0。所以,Unsupported major.minor version 51.0错误的原因是:JDK 1.6不能运行JDK 1.7编译的class文件。

以上就是我的分享,感谢各位大佬们耐心看完文章,最后再分享一个我自己的后端技术群,群里自己收集了很多Java架构资料,大家可以进群免费领取资料,群号:680075317,也可以进群一起交流,比如遇到技术瓶颈、面试不过的,大家一些交流学习!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值