星驰编程网

免费编程资源分享平台_编程教程_代码示例_开发技术文章

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

在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文件。

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言