千家信息网

java查看class文件的方法

发表于:2024-11-23 作者:千家信息网编辑
千家信息网最后更新 2024年11月23日,本篇内容主要讲解"java查看class文件的方法",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"java查看class文件的方法"吧!1,首先使用java
千家信息网最后更新 2024年11月23日java查看class文件的方法

本篇内容主要讲解"java查看class文件的方法",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"java查看class文件的方法"吧!

1,首先使用javac编译文件

2,使用javap工具打开编辑出来的class文件

javap -verbose SyncTestDemo01.class

会得到如下结果:

D:\idea_workspace\basic_demo\out\production\basic_demo>javap -verbose SyncTestDemo01.classClassfile /D:/idea_workspace/basic_demo/out/production/basic_demo/SyncTestDemo01.class  Last modified 2019-8-25; size 863 bytes  MD5 checksum a021136873e306367959a587cdbadbd6  Compiled from "SyncTestDemo01.java"public class SyncTestDemo01  minor version: 0  major version: 52  flags: ACC_PUBLIC, ACC_SUPERConstant pool:   #1 = Methodref          #12.#28        // java/lang/Object."":()V   #2 = Long               5000l   #4 = Methodref          #29.#30        // java/lang/Thread.sleep:(J)V   #5 = Class              #31            // java/lang/InterruptedException   #6 = Methodref          #5.#32         // java/lang/InterruptedException.printStackTrace:()V   #7 = Fieldref           #33.#34        // java/lang/System.out:Ljava/io/PrintStream;   #8 = String             #35            // synchronized for method   #9 = Methodref          #36.#37        // java/io/PrintStream.println:(Ljava/lang/String;)V  #10 = String             #38            // synchronized for method no method  #11 = Class              #39            // SyncTestDemo01  #12 = Class              #40            // java/lang/Object  #13 = Utf8                 #14 = Utf8               ()V  #15 = Utf8               Code  #16 = Utf8               LineNumberTable  #17 = Utf8               LocalVariableTable  #18 = Utf8               this  #19 = Utf8               LSyncTestDemo01;  #20 = Utf8               testSync  #21 = Utf8               e  #22 = Utf8               Ljava/lang/InterruptedException;  #23 = Utf8               StackMapTable  #24 = Class              #31            // java/lang/InterruptedException  #25 = Utf8               test01  #26 = Utf8               SourceFile  #27 = Utf8               SyncTestDemo01.java  #28 = NameAndType        #13:#14        // "":()V  #29 = Class              #41            // java/lang/Thread  #30 = NameAndType        #42:#43        // sleep:(J)V  #31 = Utf8               java/lang/InterruptedException  #32 = NameAndType        #44:#14        // printStackTrace:()V  #33 = Class              #45            // java/lang/System  #34 = NameAndType        #46:#47        // out:Ljava/io/PrintStream;  #35 = Utf8               synchronized for method  #36 = Class              #48            // java/io/PrintStream  #37 = NameAndType        #49:#50        // println:(Ljava/lang/String;)V  #38 = Utf8               synchronized for method no method  #39 = Utf8               SyncTestDemo01  #40 = Utf8               java/lang/Object  #41 = Utf8               java/lang/Thread  #42 = Utf8               sleep  #43 = Utf8               (J)V  #44 = Utf8               printStackTrace  #45 = Utf8               java/lang/System  #46 = Utf8               out  #47 = Utf8               Ljava/io/PrintStream;  #48 = Utf8               java/io/PrintStream  #49 = Utf8               println  #50 = Utf8               (Ljava/lang/String;)V{  public SyncTestDemo01();    descriptor: ()V    flags: ACC_PUBLIC    Code:      stack=1, locals=1, args_size=1         0: aload_0         1: invokespecial #1                  // Method java/lang/Object."":()V         4: return      LineNumberTable:        line 1: 0      LocalVariableTable:        Start  Length  Slot  Name   Signature            0       5     0  this   LSyncTestDemo01;  public synchronized void testSync();    descriptor: ()V    flags: ACC_PUBLIC, ACC_SYNCHRONIZED    Code:      stack=2, locals=2, args_size=1         0: ldc2_w        #2                  // long 5000l         3: invokestatic  #4                  // Method java/lang/Thread.sleep:(J)V         6: goto          14         9: astore_1        10: aload_1        11: invokevirtual #6                  // Method java/lang/InterruptedException.printStackTrace:()V        14: getstatic     #7                  // Field java/lang/System.out:Ljava/io/PrintStream;        17: ldc           #8                  // String synchronized for method        19: invokevirtual #9                  // Method java/io/PrintStream.println:(Ljava/lang/String;)V        22: return      Exception table:         from    to  target type             0     6     9   Class java/lang/InterruptedException      LineNumberTable:        line 5: 0        line 8: 6        line 6: 9        line 7: 10        line 9: 14        line 10: 22      LocalVariableTable:        Start  Length  Slot  Name   Signature           10       4     1     e   Ljava/lang/InterruptedException;            0      23     0  this   LSyncTestDemo01;      StackMapTable: number_of_entries = 2        frame_type = 73 /* same_locals_1_stack_item */          stack = [ class java/lang/InterruptedException ]        frame_type = 4 /* same */  public void test01();    descriptor: ()V    flags: ACC_PUBLIC    Code:      stack=2, locals=1, args_size=1         0: getstatic     #7                  // Field java/lang/System.out:Ljava/io/PrintStream;         3: ldc           #10                 // String synchronized for method no method         5: invokevirtual #9                  // Method java/io/PrintStream.println:(Ljava/lang/String;)V         8: return      LineNumberTable:        line 13: 0        line 14: 8      LocalVariableTable:        Start  Length  Slot  Name   Signature            0       9     0  this   LSyncTestDemo01;}SourceFile: "SyncTestDemo01.java"

到此,相信大家对"java查看class文件的方法"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

0