展开

关键词

首页关键词class文件

class文件

相关内容

  • Class文件结构介绍

      对于每个java程序员来说class文件应该是每天都会接触的,一个class文件都对应着唯一的一个类或接口的定义信息,但是对应class文件的具体存储结构并不一定很清楚,所以本文就梳理下class文件的结构Class文件  Class文件是一组8位字节为基础单位的二进制流,各个数据项严格按照顺序紧凑的排列在Class文件中,中间没有添加任何分隔符,整个class文件中存储的内容几乎全部是程序运行的必要数据为了便于查看class的结构我们通过一个java文件编译出对应的class文件然后通过WinHex工具或者classpy来查看。class文件: ?每个Class文件的头4个字节成为魔数(Magic Number),它的唯一作用是确定这个文件是否为一个能被虚拟机接收的Class文件。所有Class文件,魔数均为0xCAFEBABE。  
    来自:
    浏览:255
  • .class文件查看

    十六进制查看(不仅class文件可以看,其他文件格式也可以)hexdump -C XXX.class #注意C是大写(小写c则输出十进制)反汇编查看javap -c XXX.classjavap有各种参数
    来自:
    浏览:790
  • 广告
    关闭

    50+款云产品免费体验

    提供包括云服务器,云数据库在内的50+款云计算产品。打造一站式的云产品试用服务,助力开发者和企业零门槛上云。

  • 您找到你想要的搜索结果了吗?
    是的
    没有找到
  • javap查看class文件

    通过JVM编译java文件生成class字节码文件,很多时候很想用工具打开看看,目前还不清楚哪一个软件专门查看class文件的,但是通过windows下的javap命令可以查看详细的class文件ShowClass.java文件源码很简单main函数直接打印“Hello class file!”??
    来自:
    浏览:687
  • Java Class文件常量池

    Class文件的存在使得不同语言编写的程序都可以运行在Java虚拟机上,只需要这些语言经过编译器编译后的Class文件符合Java虚拟机定义的规范,Java虚拟机就可以加载执行这些Class文件。Class文件是一组以8位字节为基础单位的二进制流,各个数据项目严格按照顺序紧凑地排列在Class文件中,当遇到需要占用8个字节以上空间的数据是,则按照大端序的方式分割成若干个8位字节进行存储。上面这张图是经过编译后的Class文件中的内容魔数(magic)与版本号Class文件开头固定的4个字节为魔数,唯一作用就是用来确定这个文件是否是一个能被虚拟机接收的class文件。文件,但是不能运行以后版本的Class文件,通俗一点将就是向下兼容。大家可以通过javap -verbose xxx.class列出文件字节码的内容?通过比较javap -verbose常量池的项的索引和我们class文件二进制的表示可以发现是一一对应的。
    来自:
    浏览:183
  • Class文件结构介绍

    概述  常量池是紧接着主次版本号之后出现的,常量池可以理解为class文件之中的资源仓库,它是Class文件结构中与其他项目管理最多的数据类型,也是占用Class文件空间最大的数据项目之一,同时它还是在Class文件中第一个出现的表类型数据项目。案例代码还是和前一篇的一样,如下:public class Test { private int a; public int run(){ System.out.println(波波烤鸭); return常量池中存储着最基本的信息,不仅程序会用到,而且Class文件本身也会通过#来引用 ?文件中引导方法表的bootstrap methods[]数组的有效索引 name_and_type_index u2 值必须是对当前常量池的有效索引,常量池在该处的索引必须是CONSTANT_NameAndType_info
    来自:
    浏览:441
  • Java中class文件结构

    class文件是一组以8位字节为基础单位的二进制流组成的。在这个二进制流中没有任何分隔符,所有的数据项都是一个挨一个紧凑排列的,这就代表着其中每个字节代表什么含义,长度是多少,先后顺序如何,都是固定的魔数class文件头4个字节即为魔数。大部分的文件都会使用魔数来进行文件识别,比如一般我们看到gif、jpeg等格式的文件就知道这是个图片。但是呢,程序识别文件类型却不是根据文件扩展名而是根据魔数来的。class文件的魔数是0xCAFEBABE,Java虚拟机判断一个文件是否是class文件就是依靠此魔数进行的。版本号接下来的4个字节是class文件版本号,其中前两个字节表示的是次版本号,后两个字节表示的是主版本号。java虚拟机可以运行低于当前版本的class文件,但不能运行高于其版本的class文件。
    来自:
    浏览:318
  • JVM之Class文件结构

    每一个class文件对应一个类或者接口,但是一个类或者接口不一定生成class文件,classloader直接生成。8为字节为基础的二进制流,各个数据项按照严格的顺序排列在class文件中,没有任何分隔符,当遇到需要占用8位字节以上的数据项时,则会按照高位在前(或低位在前)方式分割为若干个8位字节存储。class本质上就是一张表 ? 魔数和Class文件版本: class文件的头四个字节成为魔数(oxCAFEBABY),确定是否可以被虚拟机接受,多数文件存储标准都采用这个形式。常量池(大小不定):class文件的资源仓库,占用空间比较大,和其它数据项交互多,第一个出现表类型数据的数据项。文件是进行动态链接)---类和借口的全限定名、字段的名称和描述符、方法的名称和描述符。
    来自:
    浏览:150
  • JVM《六 Class 文件的解析》

    上一篇说的是类加载机制,其中刚开始装载阶段是对二进制流进行装载或者解析对应的 .class 文件。而这一篇要说的就是那个被加载的 .class 文件,也顺道说一下 .Java 文件的编译过程,也就是如何变为 .class 文件的。Class 文件组成是由JVM字节码组成的,这些字节码组成了我们的这个类中的所有内容。说一下大体的结构&组成。(装作英文很好的样子)1、按照惯例,开头几位是标示为class 文件的魔数(magic)。文件时才会进行动态链接,也就是说我们class 文件中压根仅仅是存储而非保存最终的一些内存布局信息(这个是JVM通过解析文件然后分类信息,然后进行标示存放的)说到了符号引用,还有一个类似的东西叫做直接引用image.png然后Java 文件什么结构我们很清楚、Java文件怎么变为class 文件现在也已经都知道了,那class 文件产生的指令如何驱动我们计算机执行呢,这个其实就是执行引擎来驱动执行的。
    来自:
    浏览:237
  • JVM系列十(Class 文件结构).

    一、Class 文件结构JDK 的版本号已经到 14 了,相对于语言、API 以及 Java 技术体系中其他方面的变化,Class 文件结构一直处于比较稳定的状态,Class 文件的主体结构、字节码指令的语义和数量几乎没有出现过变动Class 文件是一组以8位字节为基础单位的二进制流,各个数据项目严格按照顺序紧凑地排列在 Class 文件中,中间没有添加任何分隔符,这使得整个 Class 文件中存储的内容几乎全部是程序运行的必要数据下面是 Class 文件格式: 类型 名称 数量 描述 u4 magic 1 表示这个文件是否为一个能被虚拟机接受的 Class 文件 u2 minor_version 1 次版本号 u2 major_version,用来分析 Class 文件字节码。SourceFile 记录生成这个 Class 文件的源码文件名称。
    来自:
    浏览:146
  • (六)-class文件结构1 什么是JVM的“无关性”?2 纵观Class文件结构

    也就是JVM只认识class文件,它并不管何种语言生成了class文件,只要class文件符合JVM的规范就能运行.这里写图片描述2 纵观Class文件结构class文件是一组以8位字节为基础单位的二进制流,它的内容具有严格的规范,文件中没有任何分隔符,全是连续的01. class文件中的所有内容被分为两种类型:无符号数,要么是二维表.2.1 魔数(Magic Number)class文件的头4个字节称为魔数,唯一作用是确定这个文件是否为一个能被JVM接受的Class文件.在高版本的JVM上能够运行低版本的class文件,但在低版本的JVM上无法运行高版本的class文件.2.3 常量池2.3.1 什么是常量池?2.6.4 字段表集合的注意点一个class文件的字段表集合中不能出现从父类接口继承而来字段;一个class文件的字段表集合中可能会出现程序猿没有定义的字段 如编译器会自动地在内部类的class文件的字段表集合中添加外部类对象的成员变量
    来自:
    浏览:357
  • JVM如何加载.class文件

    JVM 中类的装载是由类加载器(ClassLoader)和它的子类来实现的,Java 中的类加载器是一个重要的Java 运行时系统组件,它负责在运行时查找和装入类文件中的类。由于Java 的跨平台性,经过编译的Java 源程序并不是一个可执行程序,而是一个或多个类文件。当Java 程序需要使用某个类时,JVM 会确保这个类已经被加载、连接(验证、准备和解析)和初始化。类的加载是指把类的.class 文件中的数据读入到内存中,通常是创建一个字节数组读入.class 文件,然后产生与所加载类对应的Class 对象。加载完成后,Class 对象还不完整,所以此时的类还不可用。当类被加载后就进入连接阶段,这一阶段包括验证、准备(为静态变量分配内存并设置默认的初始值)和解析(将符号引用替换为直接引用)三个步骤。它从环境变量classpath或者系统属性java.class.path 所指定的目录中记载类,是用户自定义加载器的默认父加载器。
    来自:
    浏览:315
  • Class文件访问标志&类索引

    在阅读本节之前建议先阅读下面这篇文章,跟随我循序渐进的去解密Class文件。本文所采用的Java文件也是上一篇文章中的代码,因此强烈建议读者先阅读前一篇文章Java Class文件常量池 访问标志在常量池以后,紧接着是2个字节的访问标志,用来表示一个Class文件的基本访问信息,包括Class是类还是接口,是否被定义为public类型,是否被定义为abstract类型。Class文件通过这三项可以确定类的继承关系。类索引用来确定该类的全限定名父类索引用来确定父类的全限定名接口索引用来描述这个类实现了哪些索引?
    来自:
    浏览:243
  • class文件字节码解析

    本篇文章将介绍 .class 文件的结构,通过一个简单的例子认识 .class 文件。首先写一个java文件(本人选择在Android平台,主要是接下来一篇会讲到dex文件,方便做对比)package com.example.liuxiaojie.smalietest; import android.os.Bundleclass文件.放到Android Studio里面是这样的package com.example.liuxiaojie.smalietest; import android.os.Bundle;import#45 Constant13 07(7) Class_info 002e(42) 全局限定名常量索引为#46 Constant14 07(7) Class_info 002f(47) 全局限定名常量索引为文件的字节码有所了解了.可以看到,整个class文件的字节码都是一段一段对应好的了,每一块数据开始都是数据量,然后跟着数据,相对于dex文件而言,不用去查找偏移地址.下一篇会解析一下dex文件,解析完了就可以看到两者的区别
    来自:
    浏览:169
  • Class文件结构介绍

    访问标志  在常量池结束后,紧接着的两个字节代表访问标志(access_flags),这个标志用于识别一些类或者接口层次的访问信息,包括:这个Class是类还是接口,是否定义为public类型,是否定义为类索引,父类索引与接口索引集合  类索引(this_class)和父类索引(super_class)都是一个u2类型的数据,接口索引计数器也是一个u2类型的数据,接口索引集合则是一组u2类型的数据集合,Class文件中的这几项数据来确定这个类的继承关系类索引  确定当前类的全限定名 ??由于java单继承的原则,所以父类只可能有一个;由于Object是所有其他类的基类,所以除了Object类本身的super_class为0意外,其余的所有类的super_class都不为0. ?小结:   类索引的直接值,父类索引的直接值,接口索引集合中的索引的直接值,代表的是一个常量池中的索引值,该索引值对应为一个CONSTANT_Class_info , CONSTANT_Class_info
    来自:
    浏览:214
  • Class文件结构介绍

    属性表  在前面的内容中属性表(attribute_info)已经出现多多次了,在Class文件、字段表、方法表中都可以携带自己的属性集合,用于描述某些场景专有的信息 ?  与class文件中其他的数据项目要求严格的顺序、长度和内容不同,属性表集合的限制稍微宽松些,不在要求各个属性表具有严格顺序,并且只要不与已有属性名称重复,任何人实现的编译器都可以向属性表中写入自己的属性信息SourceFile属性SourceFile属性用于记录生成这个Class文件的源码文件名称 名称 类型 数量 attribute_name_index u2 1 attribute_length u41 sourcefile_index u2 1 sourcefile_index是指向常量池中CONSTANT_Utf8_info型常量的索引,常量值是源码文件的文件名 ?inner_classes_info结构为: 名称 类型 数量 inner_class_info_index u2 1 outer_class_info_index u2 1 inner_name_index
    来自:
    浏览:599
  • JVM加载class文件的原理

    当Java编译器编译好.class文件之后,我们需要使用JVM来运行这个class文件。那么最开始的工作就是要把字节码从磁盘输入到内存中,这个过程我们叫做【加载 】。这篇文章我们要好好谈谈JVM是如何加载class文件的?2、类装载器体系结构 JVM加载class文件必须通过一个叫做类装载器的程序,它的作用就是从磁盘文件中将要运行代码的字节码流加载进内存(JVM管理的方法区)中。(2) 扩展类装载器和自定义类装载器 : 负责除核心Java API以外的其它class文件的装载。例如、用于安装或下载标准扩展的class文件,在类路径中发现的类库的class文件,用于应用程序运行的class文件等等。
    来自:
    浏览:679
  • 文件存储

    产品概述,产品优势,使用场景,创建文件系统及挂载点,管理文件系统,系统限制,常见问题,计费概述,到期提醒,跨可用区、跨网络访问指引,权限管理,在 Linux 客户端上使用 CFS 文件系统,在 Windows客户端上使用 CFS 文件系统,自动挂载文件系统,访问管理,词汇表,服务等级协议,在容器上使用 CFS,存储类型及性能规格,简介,API 概览,请求结构,公共参数,签名方法 v3,签名方法,返回结果,,更新文件系统名,查询文件系统挂载点,查询文件系统,查询区域可用情况,删除挂载点,删除文件系统,创建文件系统,数据结构,错误码,查看账单,使用标签,可用地域,小文件及高并发场景下客户端使用卡顿,在云函数、跨网络访问指引,权限管理,在 Linux 客户端上使用 CFS 文件系统,在 Windows 客户端上使用 CFS 文件系统,API 文档,调用方式,自动挂载文件系统,访问管理,词汇表,服务等级协议,,更新文件系统存储容量限制,更新文件系统的权限组,更新文件系统名,查询文件系统挂载点,查询文件系统,查询区域可用情况,删除挂载点,删除文件系统,创建文件系统,数据结构,错误码,查看账单,使用标签,可用地域
    来自:
  • Class类文件结构

    “ 我们都知道Java虚拟机不和包括Java在的任何语言绑定,它只与Class文件这种特定的二进制文件格式所关联。而Class文件是由java文件经过javac编译器编译后生成的。” ?01—Class类文件结构在深入理解Java虚拟机一书中是先介绍概念然后具体分析,这里我就反过来描述,我们先看一下class文件,这里我打开一个本地被编译过的class文件,我们看到它是乱码的。开头,那它就肯定不是Java class文件。文件,但是不能低版本JDK运行高版本编译后的Class文件,即时文件格式并未发生任何变化,Java虚拟机也必须拒绝执行超过其版本号的Class文件。Class文件是一组以8字节为基础单位的二进制流,各个数据项目严格按照顺序紧凑排列在class文件中,中间没有任何分隔符,这使得class文件中存储的内容几乎全部是程序运行的必要程序。
    来自:
    浏览:137
  • 总结一下Class 文件结构

    根据 Java 虚拟机规范,类文件由单个 ClassFile 结构组成:ClassFile { u4 magic; Class 文件的标志 u2 minor_version;Class 的小版本号 u22.1 魔数 u4 magic; Class 文件的标志每个 Class 文件的头四个字节称为魔数(Magic Number),它的唯一作用是确定这个文件是否为一个能被虚拟机接收的 Class 文件。2.2 Class 文件版本 u2 minor_version;Class 的小版本号 u2 major_version;Class 的大版本号紧接着魔数的四个字节存储的是 Class 文件的版本号:第五和第六是次版本号高版本的 Java 虚拟机可以执行低版本编译器生成的 Class 文件,但是低版本的 Java 虚拟机不能执行高版本编译器生成的 Class 文件。 文件可以通过javap -v class类名 指令来看一下其常量池中的信息(javap -v class类名-> temp.txt :将结果输出到 temp.txt 文件)。
    来自:
    浏览:130
  • 《Java核心技术》 Class类文件结构开篇Class类文件结构

    你也不需要纠结什么OOP,FP,Design Pattern, etc.Class类文件结构class文件的结构简单讲,jvm的class文件是针对jvm的私家定制。只要运行在jvm上byte code,都需要按照class文件format来。否则jvm解析不了。自然无法执行。官网文档: The Java Virtual Machine class file formatclass文件时java虚拟机执行引擎的数据入口,也是java技术体系的基础支柱之一,了解class文件的结构对后面进一步了解虚拟机执行引擎有很重要的意义class文件是一组以八位字节为基础单位的二进制流,各个数据项目严格按照顺序紧凑地排列在class文件中,中间没有添加任何分隔符,这使得整个class文件中存储的内容几乎全部都是程序运行的必要数据,没有空隙存在文件中,类的全限定名、字段、方法都是使用CONSTANT_Utf8_info类型常量来描述名称,而该常量的长度由2个字节表示,所以类的全限定名、字段名、方法名的最大长度不能超过2个字节所能表示的最大整数
    来自:
    浏览:172

扫码关注云+社区

领取腾讯云代金券