javap-Tool ist eine nützliche Möglichkeit, Informationen über eine bestimmte Klasse oder Schnittstelle abzurufen. Durch seine Disassemblierungsfunktionen erhält der Befehl javap (auch als Java-Disassembler bekannt) die Aufgabe, dem Benutzer umfassende interne Informationen bereitzustellen. Mit den beiden Optionen -c oder -verbose, die jeweils einzigartige Ergebnisse liefern, kann sich der Benutzer im Bereich des Bytecodes und der Bytecode-Orchestrierung wiederfinden. Wenn keine Optionen verwendet werden, führt Javap die öffentlichen, geschützten und Paketfelder und -methoden der Eingabeklasse aus.
javap [option] [classname]
javap class_name
C:\Users\Aashi>javap java.lang.Object Compiled from "Object.java" public class java.lang.Object { public java.lang.Object(); public final native java.lang.Class<?> getClass(); public native int hashCode(); public boolean equals(java.lang.Object); protected native java.lang.Object clone() throws java.lang.CloneNotSupportedException; public java.lang.String toString(); public final native void notify(); public final native void notifyAll(); public final native void wait (long) throws java.lang.InterruptedException; public final void wait(long, int) throws java.lang.InterruptedException; public final void wait() throws java.lang.InterruptedException; protected void finalize() throws java.lang.Throwable; static {}; }
Hier finden Sie Anweisungen für jede Option und wie Sie sie anwenden -
-help oder --help oder -? -
Hiermit wird eine Hilfemeldung für den Javap-Befehl gedruckt.
javap -help
C:\Users\Aashi>javap -help Usage: javap <options> <classes> where possible options include: -help --help -? Print this usage message -version Version information -V -verbose Print additional information -1 Print line number and local variable tables -public Show only public classes and members -protected Show protected/public classes and members -package Show package/protected/public classes and members (default) -p -private Show all classes and members -C Disassemble the code -S Print internal type signatures -sysinfo Show system info (path, size, date, MD5 hash) of class being processed -constants Show final constants -classpath <path> Specify where to find user class files -cp <path> Specify where to find user class files -bootclasspath <path> Override location of bootstrap class files
-Version
Wird zum Drucken von Java-Versionsinformationen verwendet.
javap -version
C:\Users\Aashi>javap -version 1.8.0_151
-v oder -verbose -
Dies wird verwendet, um zusätzliche Informationen wie Stapelgröße, Anzahl lokaler Variablen und Methodenparameter auszudrucken.
javap -v class_name
C:\Users\Aashi>javap -v java.lang.Object Classfile jar:file:/C:/Program%20Files/Java/jdk1.8.0_151/jre/lib/rt.jar! /java/lang/Object.class Last modified Sep 5, 2017; size 1497 bytes MD5 checksum 074ebc688a81170b8740f1158648a3c7 Compiled from "Object.java" public class java.lang.Object minor version: 0 major version: 52 flags: ACC_PUBLIC, ACC_SUPER Constant pool: #1 = Integer 999999 #2 - String #16 //@ #3 = String #38 //nanosecond timeout value out of range #4 = String #42 //timeout value is negative #5 - Utf8 ()I #6 = Utf8 ()Ljava/lang/Object; #7 - Utf8 ()Ljava/lang/String; #8 = Utf8 ()V #9 - Utf8 (I)Ljava/lang/String; #10 - Utf8 (J)V #11 = Utf8 (JI)V #12 - Utf8 (Ljava/lang/Object;)Z #13 = Utf8 (Ljava/lang/String;)V #14 - Utf8 <clinit> #15 = Utf8 <init> #16 - Utf8 @ #17 - Utf8 Code #18 = Utf8 Exceptions #19 - Utf8 Line Number Table #20 = Utf8 Signature #21- Utf8 Source File #22 = Utf8 StackMapTable #23 Utf8 Append #24 Utf8 Clone #25 = Utf8 Equals #26 Utf8 finalize #27 = Utf8 getClass #28 Utf8 getName #29 - Utf8 hashCode #30 = Utf8 java/lang/Class #31 - Utf8 java/lang/CloneNotSupportedException #32 = Utf8 java/lang/IllegalArgumentException #33 - Utf8 Java/lang/Integer #34 Utf8 java/lang/InterruptedException
-l -
Dies wird zum Drucken von Zeilennummern und lokalen Variablentabellen verwendet.
javap -l class_name
C:\Users\Aashi>javap -1 java.lang.Object Compiled from "Object.java” public class java.lang.Object { public java.lang.Object(); LineNumberTable: line 37: 0 public final native java.lang.Class<?> getClass(); public native int hashCode(); public boolean equals(java.lang.Object); LineNumberTable: line 149: 0 protected native java.lang.Object clone() throws java.lang.CloneNotSupportedException; public java.lang.String toString(); LineNumberTable: line 236: 0 public final native void notify(); public final native void notifyAll(); public final native void wait(long) throws Java.lang.InterruptedException; public final void wait(long, int) throws java.lang.InterruptedException; LineNumberTable: line 447: 0 line 448: 6 line 451: 16 line 452: 26 line 456: 36 line 457: 40 line 460: 44 line 461: 49 public final void wait() throws java.lang.InterruptedException; LineNumberTable: line 502:0 line 503: 5 protected void finalize() throws java.lang.Throwable; }
-Öffentlich
Dies wird verwendet, um nur öffentliche Klassen und Mitglieder zu drucken.
javap -public class_name
C:\Users\Aashi>javap -public java.lang.Object Compiled from "Object.java" public class java.lang.Object { public java.lang.Object(); public final native java.lang.Class<?> getClass(); public native int hashCode(); public boolean equals(java.lang.Object); public java.lang.String toString(); public final native void notify(); public final native void notifyAll(); public final native void wait (long) throws java.lang.InterruptedException; public final void wait (long, int) throws java.lang.InterruptedException; public final void wait() throws java.lang.InterruptedException; }
-Geschützt
Dies wird zum Drucken geschützter/öffentlicher Klassen und Mitglieder verwendet.
javap -protected class_name
C:\Users\Aashi>javap -protected java.lang.Object Compiled from "Object.java" public class java.lang.Object { public java.lang.Object(); public final native java.lang.Class<?> getClass(); public native int hashCode(); public boolean equals(java.lang.Object); protected native java.lang.Object clone() throws java.lang.CloneNotSupportedException; public java.lang.String toString(); public final native void notify(); public final native void notifyAll(); public final native void wait(long) throws java.lang.InterruptedException; public final void wait (long, int) throws java.lang.InterruptedException; public final void wait() throws java.lang.InterruptedException; protected void finalize() throws java.lang.Throwable; }
-Tasche
Dies wird zum Drucken von Paket-/geschützten/öffentlichen Klassen und Mitgliedern verwendet (Standard).
javap -package class_name
C:\Users\Aashi>javap -package java.lang.Object Compiled from "Object.java" public class java.lang.Object { public java.lang.Object(); public final native java.lang.Class<?> getClass(); public native int hashCode(); public boolean equals(java.lang.Object); protected native java.lang.Object clone() throws java.lang.CloneNotSupportedException; public java.lang.String toString(); public final native void notify(); public final native void notifyAll(); public final native void wait (long) throws java.lang.InterruptedException; public final void wait (long, int) throws java.lang.InterruptedException; public final void wait() throws java.lang.InterruptedException; protected void finalize() throws java.lang.Throwable; static {}; }
-c
Dies wird zum Drucken des Demontagecodes verwendet.
javap -c class_name
C:\Users\Aashi>javap -c java.lang.Object Compiled from "Object.java" public class java.lang.Object (public java.lang.Object(); Code: 0: return public final native java.lang.Class<?> getClass(); public native int hashCode(); public boolean equals(java.lang.Object); Code: 0: aload e 1: aload_1 2: 1f_acmpne 9 5:iconst_1 6: goto 10 9: iconst_0 10: ireturn protected native java.lang.Object clone() throws java.lang.CloneNotSupportedException; public java.lang.String toString(); Code: 0: new #52 //class java/lang/StringBuilder 3: dup 4: invokespecial #74 //Method java/lang/StringBuilder."<init>": ()V 7: aload_e 8: invokevirtual #73 // Method getClass: ()Ljava/lang/Class; 11: invokevirtual #67 // Method java/lang/class.getName:()Ljava/lang/String; 14: invokevirtual #76 // Method java/lang/StringBuilder.append: (Ljava/lang/String;) Ljava/lang/StringBuilder; 17: 1dc #2 // String @ 19: invokevirtual #76 // Method java/lang/StringBuilder.append: (Ljava/lang/String;)Ljava/lang/StringBuilder; 22: aload_e 23: invokevirtual #78 // Method hashCode: ()I 26: invokestatic #69 // Method java/lang/Integer.toHexString: (I) Ljava/lang/String; 29: invokevirtual #76 // Method java/lang/StringBuilder.append: (Ljava/lang/String;) Ljava/lang/StringBuilder; 32: invokevirtual #75 // Method java/lang/StringBuilder.toString: ()Ljava/lang/String; 35: areturn public final native void notify();
-s -
Dies wird zum Drucken interner Typsignaturen verwendet.
javap -s class_name
C:\Users\Aashi>javap -s java.lang.Object Compiled from "Object.java" public class java.lang.Object { public java.lang.Object(); descriptor: ()V public final native java.lang.Class<?> getClass(); descriptor: ()Ljava/lang/class; public native int hashCode(); descriptor: ()I public boolean equals(java.lang.Object); descriptor: (Ljava/lang/Object;)Z protected native java.lang.Object clone() throws java.lang.CloneNotSupportedException; descriptor:()Ljava/lang/Object; public java.lang.String toString(); descriptor: ()Ljava/lang/String; public final native void notify(); descriptor: ()V public final native void notifyAll(); descriptor: ()V public final native void wait(long) throws java.lang.InterruptedException; descriptor: (J)V public final void wait(long, int) throws java.lang.InterruptedException; descriptor: (JI)V public final void wait() throws java.lang.InterruptedException; descriptor: ()V protected void finalize() throws java.lang.Throwable; descriptor: ()V static {}; descriptor: ()V }
-sysinfo -
Dies wird verwendet, um Systeminformationen (Pfad, Größe, Datum, MD5-Hash) der verarbeiteten Klasse zu drucken.
javap -sysinfo class_name
C:\Users\Aashi>javap -sysinfo java.lang.Object Classfile jar:file:/C:/Program%20Files/Java/jdk1.8.0_151/jre/lib/rt.jar! /java/lang/Object.class Last modified Sep 5, 2017; size 1497 bytes MD5 checksum 074ebc688a81170b8740f1158648a3c7 Compiled from "Object.java" public class java.lang.Object { public java.lang.Object(); public final native java.lang.Class<?> getClass(); public native int hashCode(); public boolean equals(java.lang.Object); protected native java.lang.Object clone() throws java.lang.CloneNotSupportedException; public java.lang.String toString(); public final native void notify(); public final native void notifyAll(); public final native void wait (long) throws java.lang.InterruptedException; public final void wait (long, int) throws java.lang.InterruptedException; public final void wait() throws java.lang.InterruptedException; protected void finalize() throws java.lang.Throwable; static {}; }
-konstant -
Dies wird verwendet, um die endgültigen Konstanten der Klasse zu drucken.
javap -constants class_name
C:\Users\Aashi>javap -constants java.lang.Object Compiled from "Object.java" public class java.lang.Object { public java.lang.Object(); public final native java.lang.Class<?> getClass(); public native int hashCode(); public boolean equals(java.lang.Object); protected native java.lang.Object clone() throws java.lang.CloneNotSupportedException; public java.lang.String toString(); public final native void notify(); public final native void notifyAll(); public final native void wait (long) throws java.lang.InterruptedException; public final void wait(long, int) throws java.lang.InterruptedException; public final void wait() throws java.lang.InterruptedException; protected void finalize() throws java.lang.Throwable; static {}; }
javap-Tool ist ein vielseitiges und sehr leistungsstarkes Tool für Java-Programmierer, das es ihnen ermöglicht, Klassendokumente zu diagnostizieren und zu debuggen, Felder und Methoden auszuwerten und sauberen Code aus dem Bytecode von Klassendokumenten zu generieren. Dieses unverzichtbare Tool eignet sich für Java-Entwickler aller Erfahrungsstufen und ermöglicht ihnen die einfache Erweiterung ihres Wissens und die Fehlerbehebung bei Java-Programmen. Das Javap-Tool ist ein unersetzlicher Besitz für jeden angehenden Programmierer und wird sicherlich dabei helfen, seine Programmierkenntnisse schnell zu verbessern. Darüber hinaus hilft die breite Palette an Funktionen Programmierern, ihre Vorgehensweisen zu verfeinern, was ihnen einen Wettbewerbsvorteil beim Erstellen von Java-Anwendungen verschafft.
Das obige ist der detaillierte Inhalt vonJavap-Tools und Beispiele in Java. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!