您好,登錄后才能下訂單哦!
本篇內容主要講解“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進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。