`
huang552
  • 浏览: 102684 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

查看class文件的字节码版本号

阅读更多

package com.kingstargroup.eqa.data;

import java.io.FileInputStream;

public class ParseClassFile{

 public static void main(String args[]){

 

 try{

 //读取文件数据,文件是当前目录下的First.class

 FileInputStream fis = new FileInputStream("C:/ByqxdtDao.class");

 

 int length = fis.available();

 //文件数据

 byte[] data = new byte[length];

 

 //读取文件到字节数组

 fis.read(data);

 

 //关闭文件

 fis.close();

 

 //解析文件数据

 parseFile(data);

 

 }catch(Exception e){

 System.out.println(e);

 }

 }

 

 

 private static void parseFile(byte[] data){

 //输出魔数

 System.out.print("魔数(magic):0x");

 System.out.print(Integer.toHexString(data[0]).substring(6).toUpperCase());

 System.out.print(Integer.toHexString(data[1]).substring(6).toUpperCase());

 System.out.print(Integer.toHexString(data[2]).substring(6).toUpperCase());

 System.out.println(Integer.toHexString(data[3]).substring(6).toUpperCase());

 

 //主版本号和次版本号码
 int minor_version = (((int)data[4]) << 8) + data[5];

 int major_version = (((int)data[6]) << 8) + data[7];

 

 System.out.println("版本号(version):" + major_version + "." + minor_version);

 }

 }

分享到:
评论
1 楼 kingtay 2010-10-12  

相关推荐

    从一个class文件深入理解Java字节码结构

    对于字节码文件中的每一个元素,如魔数、版本号、常量池等,都需要根据它们的结构进行解读。例如,魔数`0xCAFEBABE`用于识别文件格式;版本号则指示了字节码的Java版本,影响后续解析规则。 6. **常量池详解** ...

    Java字节码(.class文件)格式详解((转载)

    每个Java类都由一个`.class`文件表示,其中包含了编译后的字节码指令。`.class`文件的结构非常严谨,它不仅包含了类的信息,如类名、方法、变量等,还包含了运行时必要的元数据。 一、`.class`文件结构 1. 文件头:...

    Class(字节码)了解基础

    通过使用javap工具,我们可以对编译后的Class文件进行反编译,从而查看其结构和字节码指令。这有助于开发者理解Java虚拟机如何加载和执行Java类,也是深入分析和优化Java程序性能的基础。 总的来说,Class文件中的...

    class文件的字节码结构.pdf

    总结来说,深入理解`.class`文件的字节码结构对于优化Java代码、编写字节码级别的工具(如字节码插桩)以及理解JVM的工作原理至关重要。通过对`.class`文件的剖析,开发者能更好地掌控程序的运行效率和行为,提升...

    轻松看懂Java字节码.pdf

    在实际分析Java字节码时,可以利用javap工具查看生成的字节码指令,例如以Main.class文件为例,会看到一系列的数字和字符组合。它们按照一定的格式描述了Java程序在执行时所需要的具体操作。文档中提到的内容部分...

    class文件查看器.rar

    每个class文件都遵循统一的格式,其中包含魔数、版本号、常量池、访问标志、字段表、方法表、属性表等重要组成部分。这些信息是Java虚拟机(JVM)执行程序的基础。 而"class文件查看器"则提供了一个友好的界面,让...

    java字节码.docx

    主版本号表示 Java 字节码文件的主要版本号,次版本号表示 Java 字节码文件的次要版本号。在本例中,主版本号为 1,次版本号为 8。 常量池(Constant Pool) 常量池是 Java 字节码文件中的一种数据结构,它存储了 ...

    Java字节码简单说明.docx

    魔数和 Class 文件的版本号是 Class 文件的头 4 个字节,用于确定这个文件是否为一个能被虚拟机接受的 Class 文件。紧接着魔数的 4 个字节存储的是 Class 文件的版本号,包括次版本号和主版本号。 常量池是 Class ...

    java class文件编译

    2. 版本号:包含字节码版本和常量池的版本信息,用于确保JVM能够正确解析。 3. 常量池:存储各种常量、字符串、类和接口的引用等。 4. 类信息:包括类名、父类名、接口列表。 5. 字段表:定义类或接口的字段(变量)...

    class文件结构(简单class文件)

    紧随魔术数之后,是两个字节的版本信息,分别表示主版本号和次版本号,主版本号表示class文件可以被执行的JVM版本,次版本号表示class文件的兼容性。class文件中的版本信息告诉JVM运行class文件的Java环境版本。 接...

    class文件结构浅析

    2. **版本号**:紧接着魔术码之后,同样占用4个字节,包含主要版本号和次要版本号,用于指示Class文件的版本。这使得JVM可以根据版本号来判断Class文件是否与当前JVM版本兼容。 3. **常量池**:常量池是Class文件中...

    class文件解析案例

    - **版本号**:包括Minor和Major版本号,表示该class文件的JVM版本。 - **常量池**:存储各种符号引用和字面量,如类名、方法名、字符串等。 - **访问标志**:标识类或接口的访问权限及特性,如public、final、...

    java解析class文件

    Java解析Class文件是Java开发中的一个重要环节,它涉及到对字节码的理解和处理。Class文件是Java编译器将源代码编译后的结果,包含了类的结构信息、方法定义、常量池等关键数据。理解并能解析Class文件,对于进行JVM...

    字节码文件结构详解.docx

    2. **minor_version** 和 **major_version**:分别表示次要版本号和主要版本号,定义了 Class 文件的 Java 版本。 3. **constant_pool_count** 和 **constant_pool**:常量池表,存储各种常量和引用,包括字符串、...

    java反编译工具(.class文件反编译成.java文件)

    Java反编译是将已编译的字节码(.class文件)转换回源代码(.java文件)的过程,这对于理解和学习已有的Java程序、逆向工程或调试都是很有用的。标题提到的"java反编译工具"是用于这个目的的软件,它能够帮助开发者...

    class 文件

    2. **版本号**:包括次版本号和主版本号,用于确定JVM应该按照哪个版本的字节码规范来解析Class文件。 3. **常量池**:存储各种常量,如字符串、类和接口的引用、方法名和描述符等,是Class文件中占用空间最大的...

    class文件分析

    .class文件的结构遵循Java虚拟机规范,主要包括魔数、版本号、常量池、访问标志、类索引、父类索引、接口索引集合、字段表集合、方法表集合和属性表集合。这些组成部分对理解类的结构和行为至关重要。 Android逆向...

    class文件解析

    jad是一个早期的Java反汇编器,它可以解析Class文件并展示其中的字节码,但现代的开发环境中更常用的是javap,它是JDK自带的命令行工具,提供了丰富的选项来查看类的结构和字节码细节。 通过解码Class文件,开发者...

Global site tag (gtag.js) - Google Analytics