java常见错误之unsupported major.minor version

          今天编译时遇到一个错误unsupported major.minor version50.0,看到这个错误的时候, 我首先想到了是java编译器版本的问题,因为我PC默认的JDK是1.7,但是在Eclipse里面默认的是1.6,当我调整了JDK的版本后,这个问题就解决了。

          回到问题的本身,major和minor是什么呢?Google一下可以得到很多信息,它实际上是软件的主次版本号,51是主版本号,0是次版本号。怎么能查看到它的版本号呢?java实际也提供了这个命令,javap.

         

javap -verboase xxx.class

 就可以得到这个class文件的一些相关信息,就可以清楚地看到major和minor的值。查看oracle的官网,有更多的javap命令的解释,http://docs.oracle.com/javase/7/docs/technotes/tools/windows/javap.html

 

    在网上找到一个JDK的版本号的表

    

JDK 编译器版本target 参数十六进制 minor.major十进制 minor.major
jdk1.1.8不能带 target 参数00 03 00 2D45.3
jdk1.2.2不带(默认为 -target 1.1)00 03 00 2D45.3
jdk1.2.2-target 1.200 00   00 2E46.0
jdk1.3.1_19不带(默认为 -target 1.1)00 03 00 2D45.3
jdk1.3.1_19-target 1.300 00   00 2F47.0
j2sdk1.4.2_10不带(默认为 -target 1.2)00 00   00 2E46.0
j2sdk1.4.2_10-target 1.400 00   00 3048.0
jdk1.5.0_11不带(默认为 -target 1.5)00 00   00 3149.0
jdk1.5.0_11-target 1.4 -source 1.400 00   00 3048.0
jdk1.6.0_01不带(默认为 -target 1.6)00 00   00 3250.0
jdk1.6.0_01-target 1.500 00   00 3149.0
jdk1.6.0_01-target 1.4 -source 1.400 00   00 3048.0
jdk1.7.0不带(默认为 -target 1.6)00 00   00 3250.0
jdk1.7.0-target 1.700 00   00 3351.0
jdk1.7.0-target 1.4 -source 1.400 00   00 3048.0
Apache Harmony 5.0M3不带(默认为 -target 1.2)00 00   00 2E46.0
Apache Harmony 5.0M3-target 1.400 00   00 3048.0

 

     可以看出,JDK1.7对应的版本号是50,JDK1.6对应的版本号是49. 低版本的JDK编译的class是可以在高版本的虚拟机上运行的,但是高版本的JDK编译的class是不能再低版本的虚拟机上运行的。

     

     如果我们碰到类似的问题,是否也需要下载一个低版本的JDK来重新编译一次呢?其实java早就帮我们考虑到了这一点,我们在编译的时候可以指明我们要使用哪个版本的JDK,如

     

javac -target 1.6  **.java

 

    但是有一点事需要注意的,如果你的java文件使用到的是1.7新增的一些feature,再指定到1.6编译,肯定是不行的。

   

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值