`
shuaijie506
  • 浏览: 137784 次
  • 性别: Icon_minigender_1
  • 来自: 郑州
社区版块
存档分类
最新评论

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

 
阅读更多

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

 

 jdk  minor major 
 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:

......

分享到:
评论

相关推荐

    查看java类版本.pdf

    总结:Java类文件的`major_version`和`minor_version`是识别类文件格式的关键,不同的版本号对应着不同版本的JVM。在开发和部署过程中,确保编译环境和运行环境的Java版本一致性是避免`Unsupported major.minor ...

    JDK 1.8.0-201

    版本号1.8.0_201指的是该JDK的特定更新版本,其中“1.8”代表主版本号,表明这是Java 8的一个版本,“0_201”则表示次要更新,用于修复错误、添加改进和增强功能。 **Java 8的重要特性** 1. **Lambda表达式**:这...

    服务器出现java.sql.SQLException No suitable driver found for 的.pdf

    - **下载合适版本的驱动**:根据当前使用的JDK版本下载对应的MySQL JDBC驱动版本。 - 例如,对于JDK 8,建议使用MySQL Connector/J 5.1.x 或 8.0.x 版本。 - 确保在导入jar包时选择了与JDK版本相匹配的驱动程序版本...

    spring2.5+JDK1.8 版本报错的解决办法(修改后jar)

    原来spring-2.5.5.jar有一个检查JDK版本号的类,编码质量略低,导致1.8被误认为未达到“JDK1.5以上版本”这个要求。。。 org.springframework.core.JdkVersion 于是找到一个spring-core-3.x.RELEASE.jar,用其中的...

    class文件解析

    2. 文件版本:接着是两个2字节的次版本号和主版本号,用于标识Class文件的版本,与JVM的版本对应,确保兼容性。 3. 表结构:表是Class文件的核心,包括常量池表、访问标志表、类索引、父类索引、接口索引集合、字段...

    jdk7_jdk8-oracle19C所需驱动.zip

    在描述中提到的"jdk7_jdk8-oracle19C所需驱动"意味着这个压缩包可能包含ojdbc7和ojdbc8两个版本的驱动,以满足不同Java版本的兼容性需求。Oracle 19C数据库的ojdbc驱动通常包含在ojdbc.jar或者ojdbcxx.jar文件中,...

    IntelliJ IDEA引入第三方jar包或查看Java源码的时候报decompiled.class file bytecode version:52.0(java 8)错误的解决办法

    字节码版本号52.0对应于Java 8,因为Java的字节码版本号随着Java版本的升级而变化。 当你试图在不支持Java 8的环境中打开或运行这些字节码文件时,IntelliJ IDEA无法正确解析,因此会出现上述错误。要解决这个问题...

    Java 连接access 导入 ucanaccess jar包

    在Java编程中,有时我们需要与Microsoft Access数据库进行交互,特别是在处理小型数据存储或与遗留系统集成时。然而,Java的标准数据库连接API(JDBC)原生并不支持Access数据库。为了解决这个问题,开发者通常会...

    Java class文件格式1

    2. **版本号**:紧跟魔数之后的是两个无符号短整数,分别为**次要版本号(Minor Version)**和**主要版本号(Major Version)**,它们指示了Class文件所对应的JDK版本。例如,版本号0x34对应于JDK 1.8。 3. **常量...

    轻松看懂Java字节码.pdf

    例如,主版本号为46表示编译该Java类文件的JDK版本为1.1,而主版本号为52则表示编译版本为1.8。 3. 常量池(Constant Pool):紧随版本信息之后的是常量池,它包含了程序中用到的所有字符串、类、接口、方法等信息...

    bcprov-jdk15on-1.65.jar中文-英文对照文档.zip

    注:下文中的 *** 代表文件名中的版本号。 # 【bcprov-jdk15on-***.jar中文-英文对照文档.zip】 中包含: 中文-英文对照文档:【bcprov-jdk15on-***-javadoc-API文档-中文(简体)-英语-对照版.zip】 jar包下载地址...

    JAVA 调用SAP SOAP webservice.docx

    一旦添加了 web 服务客户端,我们可以生成对应的 JAVA 类。 1. 右键点击项目名称,选择“New”->“Class”。 2. 在“New Java Class”对话框中,输入类名,例如“TestSAPWebservice”。 3. 选择“OK”,以便生成 ...

    JDK 1.8.0_101 for Windows

    版本号1.8.0_101指的是JDK的第101次更新,属于Java 8的主要更新序列之一。在Windows操作系统环境下,JDK提供了完整的Java环境,包括Java编译器(javac)、Java解释器(java)、Java虚拟机(JVM)以及各种开发和调试...

    windows和Linux版本的jdk.rar

    3. **Java运行环境**: JDK提供Java虚拟机(JVM),使得Windows系统可以运行字节码(.class文件)形式的Java程序。 4. **版本号**: "8u74"表示这是Java 8的第74个更新版本,其中"u"代表"update"。 **Linux版JDK ...

    java环境搭建步骤

    通过使用JDK中的javac编译器来编译Java文件,会生成对应的.class文件。对于编译过程中出现的错误,需要根据提示进行修改,并重新编译。 运行.class类文件是通过JDK中的Java运行时环境(JRE)来完成的。使用命令行...

    ojdbc6-11.2.0.1.0.jar

    `11.2.0.1.0`是Oracle数据库的版本号,表明此驱动与Oracle 11g Release 2数据库兼容。 3. **使用方法**: 在Java项目中,为了使用`ojdbc6-11.2.0.1.0.jar`,你需要将其添加到项目的类路径中。这可以通过IDE的设置...

    Java基础入门.md

    - **安装目录**:通常情况下,JDK会被安装到一个指定的目录下,例如`C:\Program Files\Java\jdk-版本号`。 ##### 3. 配置环境变量 - **Path环境变量**:为了让用户能够在任意路径下使用JDK提供的命令(如javac和...

    eclipse与JDK配置

    - **步骤4**: 在"VM安装目录"中,浏览并找到JDK的安装路径,通常是`C:\Program Files\Java\jdk版本号`,然后点击"完成"(Finish)。 ### 4. 配置Eclipse的工作空间JRE - **步骤1**: 在"首选项"窗口中,选择"工作区...

    jdk5.0 资源下载

    2. 自动装箱/拆箱(Autoboxing and Unboxing):自动装箱允许基本数据类型与对应的包装类之间进行无缝转换,简化了代码,提高了编写效率。 3. 枚举类型(Enums):JDK5.0引入了枚举类型,使得常量的定义更加规范,...

Global site tag (gtag.js) - Google Analytics