Java类文件(.class文件)版本号与JDK的对应关系

2 篇文章 0 订阅
2 篇文章 0 订阅

一个java的class文件是一个二进制文件,其中前四个字节是magic位,第五到第六个字节对应于minor和major,下面是这个类文件版本与JDK的对应关系:

 

 jdk minormajor 
 1.0 45 3
 1.1 45 3
 1.2 46 0
 1.3 47 0
 1.4 48 0
 1.5 49 0
 1.6 50 0
 1.7 51 0

 

所以当见到类似如下的错误时就应该知道问题出在哪里了:

错误的类文件: ...\jetty-util-8.0.4.v20111024.jar(org/eclipse/jetty/util/TypeUtil.class) 

类文件具有错误的版本 50.0,应为 49.0

注:这个错误是提示你应该使用jdk1.6而不是jdk1.5。

 

小技巧,在class文件所在目录,可以使用javap命令查看版本号

如:javap -verbose AGateway,会显示以下内容,找到major version

public abstract class org.smslib.AGateway extends java.lang.Object

  SourceFile: "AGateway.java"

  InnerClass:

   #56= #29 of #54; //QueueManager=class org/smslib/AGateway$QueueManager of class org/smslib/AGateway

   #58= #10 of #54; //Statistics=class org/smslib/AGateway$Statistics of class org/smslib/AGateway

   public #60= #59 of #54; //GatewayAttributes=class org/smslib/AGateway$GatewayAttributes of class org/smslib/AGateway

   public final #62= #61 of #54; //AsyncEvents=class org/smslib/AGateway$AsyncEvents of class org/smslib/AGateway

   public final #64= #63 of #54; //GatewayStatuses=class org/smslib/AGateway$GatewayStatuses of class org/smslib/AGateway

   public final #66= #65 of #54; //Protocols=class org/smslib/AGateway$Protocols of class org/smslib/AGateway

   public final #136= #135 of #266; //MessageClasses=class org/smslib/InboundMessage$MessageClasses of class org/smslib/Inbo

undMessage

   public final #170= #169 of #269; //DeliveryStatuses=class org/smslib/StatusReportMessage$DeliveryStatuses of class org/sm

slib/StatusReportMessage

  minor version: 0

  major version: 51

  Constant pool:

......

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值