本篇内容主要讲解“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.class Classfile /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_SUPER Constant pool: #1 = Methodref #12.#28 // java/lang/Object."<init>":()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 <init> #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 // "<init>":()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."<init>":()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文件的方法”有了更深的了解,不妨来实际操作一番吧!这里是亿速云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。