有时候为了研究javac的原理,要去看看class文件的内容是如何组织的,这时候很有必要查看class文件。
java class文件怎么看?
查看class文件方法有很多种,这里推荐使用jdk自带的javap工具。
首先建立如下源码:
public class helloworld{ public static void main(string[] args){ system.out.println("hello world!"); }}
使用javac编译器把源文件编译好,再接着使用javap工具查看class文件,命令如下
javap -verbose helloworld
这是dos窗口的运行结果复制出来如下图:
f:\>javac helloworld.javaf:\>javap -verbose helloworldclassfile /f:/helloworld.class last modified 2017-12-24; size 426 bytes md5 checksum 4efac412ef483c8a3fe7489c87d15c8c compiled from "helloworld.java"public class helloworld minor version: 0 major version: 52 flags: acc_public, acc_superconstant 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 // helloworld #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 helloworld.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 helloworld #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 helloworld(); 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: "helloworld.java"f:\>
相关学习推荐:java基础教程
以上就是java .class文件怎么看?的详细内容。