Java中常见的javac javap命令配置

1 配置jdk常见的环境变量是我们最常用的事情 但是有时候配置无法生效问题 现在 梳理下流程

2 找到jdk 的安装目录 这里以C盘为主 

C:\Program Files\Java\jdk1.8.0_131

3 配置环境变量 JAVA_HOME

 

4 配置path路径

 

5 配置Classpath路径

 

6 编写java程序 

public class Hello{

public static void main(String[] args) {

    System.out.println("Hello World");

        }

}

编译 打印

7 javap是jdk自带的反解析工具。它的作用就是根据class字节码文件,反解析出当前类对应的code区(汇编指令)、本地变量表、异常表和代码行偏移量映射表、常量池等等信息。

C:\Users\lenovo\Desktop>javap -v hello.class

Classfile /C:/Users/lenovo/Desktop/hello.class

  Last modified 2020-4-14; size 415 bytes

  MD5 checksum bd70c66b565a03a1fc2b96589b11a4cc

  Compiled from "Hello.java"

public class Hello

  minor version: 0

  major version: 52

  flags: ACC_PUBLIC, ACC_SUPER

Constant pool:

  #1 = Methodref          #6.#15        // java/lang/Object."<init>":()V

  #2 = Fieldref          #16.#17        // java/lang/System.out:Ljava/io/PrintStream;

  #3 = String            #18            // Hello World

  #4 = Methodref          #19.#20        // java/io/PrintStream.println:(Ljava/lang/String;)V

  #5 = Class              #21            // Hello

  #6 = Class              #22            // java/lang/Object

  #7 = Utf8              <init>

  #8 = Utf8              ()V

  #9 = Utf8              Code

  #10 = Utf8              LineNumberTable

  #11 = Utf8              main

  #12 = Utf8              ([Ljava/lang/String;)V

  #13 = Utf8              SourceFile

  #14 = Utf8              Hello.java

  #15 = NameAndType        #7:#8          // "<init>":()V

  #16 = Class              #23            // java/lang/System

  #17 = NameAndType        #24:#25        // out:Ljava/io/PrintStream;

  #18 = Utf8              Hello World

  #19 = Class              #26            // java/io/PrintStream

  #20 = NameAndType        #27:#28        // println:(Ljava/lang/String;)V

  #21 = Utf8              Hello

  #22 = Utf8              java/lang/Object

  #23 = Utf8              java/lang/System

  #24 = Utf8              out

  #25 = Utf8              Ljava/io/PrintStream;

  #26 = Utf8              java/io/PrintStream

  #27 = Utf8              println

  #28 = Utf8              (Ljava/lang/String;)V

{

  public Hello();

    descriptor: ()V

    flags: ACC_PUBLIC

    Code:

      stack=1, locals=1, args_size=1

        0: aload_0

        1: invokespecial #1                  // Method java/lang/Object."<init>":()V

        4: return

      LineNumberTable:

        line 1: 0

  public static void main(java.lang.String[]);

    descriptor: ([Ljava/lang/String;)V

    flags: ACC_PUBLIC, ACC_STATIC

    Code:

      stack=2, locals=1, args_size=1

        0: getstatic    #2                  // Field java/lang/System.out:Ljava/io/PrintStream;

        3: ldc          #3                  // String Hello World

        5: invokevirtual #4                  // Method java/io/PrintStream.println:(Ljava/lang/String;)V

        8: return

      LineNumberTable:

        line 3: 0

        line 4: 8

}

SourceFile: "Hello.java"

C:\Users\lenovo\Desktop>javap -v hello.class

Classfile /C:/Users/lenovo/Desktop/hello.class

  Last modified 2020-4-14; size 415 bytes

  MD5 checksum bd70c66b565a03a1fc2b96589b11a4cc

  Compiled from "Hello.java"

      public class Hello

      minor version: 0

      major version: 52

      flags: ACC_PUBLIC, ACC_SUPER

Constant pool:

  #1 = Methodref          #6.#15        // java/lang/Object."<init>":()V

  #2 = Fieldref          #16.#17        // java/lang/System.out:Ljava/io/PrintStream;

  #3 = String            #18            // Hello World

  #4 = Methodref          #19.#20        // java/io/PrintStream.println:(Ljava/lang/String;)V

  #5 = Class              #21            // Hello

  #6 = Class              #22            // java/lang/Object

  #7 = Utf8              <init>

  #8 = Utf8              ()V

  #9 = Utf8              Code

  #10 = Utf8              LineNumberTable

  #11 = Utf8              main

  #12 = Utf8              ([Ljava/lang/String;)V

  #13 = Utf8              SourceFile

  #14 = Utf8              Hello.java

  #15 = NameAndType        #7:#8          // "<init>":()V

  #16 = Class              #23            // java/lang/System

  #17 = NameAndType        #24:#25        // out:Ljava/io/PrintStream;

  #18 = Utf8              Hello World

  #19 = Class              #26            // java/io/PrintStream

  #20 = NameAndType        #27:#28        // println:(Ljava/lang/String;)V

  #21 = Utf8              Hello

  #22 = Utf8              java/lang/Object

  #23 = Utf8              java/lang/System

  #24 = Utf8              out

  #25 = Utf8              Ljava/io/PrintStream;

  #26 = Utf8              java/io/PrintStream

  #27 = Utf8              println

  #28 = Utf8              (Ljava/lang/String;)V

{

  public Hello();

    descriptor: ()V

    flags: ACC_PUBLIC

    Code:

      stack=1, locals=1, args_size=1

        0: aload_0

        1: invokespecial #1                  // Method java/lang/Object."<init>":()V

        4: return

      LineNumberTable:

        line 1: 0

  public static void main(java.lang.String[]);

    descriptor: ([Ljava/lang/String;)V

    flags: ACC_PUBLIC, ACC_STATIC

    Code:

      stack=2, locals=1, args_size=1

        0: getstatic    #2                  // Field java/lang/System.out:Ljava/io/PrintStream;

        3: ldc          #3                  // String Hello World

        5: invokevirtual #4                  // Method java/io/PrintStream.println:(Ljava/lang/String;)V

        8: return

      LineNumberTable:

        line 3: 0

        line 4: 8

}

SourceFile: "Hello.java"

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值