在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,也可以进群一起交流,比如遇到技术瓶颈、面试不过的,大家一些交流学习!