Wie die javap Befehl verwenden

Das javap Befehl wird der Java genannt # 147-Disassembler # 148-weil es auseinander nimmt Klassendateien und sagt Ihnen, was in ihnen ist. Sie werden mit diesem Befehl nicht oft, aber es verwenden, um herauszufinden, wie eine bestimmte Java-Anweisung funktioniert, ist Spaß, manchmal. Sie können es auch verwenden, um herauszufinden, welche Methoden für eine Klasse zur Verfügung stehen, wenn Sie die Klasse zu erstellen, nicht den Quellcode haben, die verwendet wurde.

Hier ist das allgemeine Format:

javap Dateiname [Optionen]

Im Folgenden ist typisch für die Informationen erhalten Sie, wenn Sie den Lauf javap Befehl:

C: samples java>javap HelloAppZusammengestellt von "HelloApp.java" public class HelloApp erweitert java.lang.Object {public HelloApp () - public static void main (java.lang.String []) -}

Wie Sie sehen können, die javap Befehl anzeigt, dass die HelloApp Klasse wurde von der kompilierten HelloApp.java Datei, und dass es besteht aus a HelloApp Öffentlichkeit Klasse und ein Haupt Öffentlichkeit Verfahren.

Sie können zwei Optionen mit der zu verwenden javap Befehl. Wenn Sie die -c Option, die javap Befehl zeigt die aktuelle Java-Bytecode durch den Compiler für die Klasse erstellt. (Java-Bytecode ist das ausführbare Programm aus Ihrer Java-Quelldatei erstellt.)

Und wenn Sie die Verwendung -weitschweifig Option, die Bytecode - plus eine Tonne andere faszinierende Informationen über die Innereien der Klasse - werden angezeigt. Hier ist die -c Ausgang für eine Klasse mit dem Namen HelloApp:

C: Java samples> javap HelloApp -cCompiled von "HelloApp.java" public class HelloApp erweitert java.lang.Object {public HelloApp () - Code: 0: aload_01: invokespecial # 1 // Methodjava / lang / Objekt. "":() V4: returnpublic static void main (java.lang.String []) - Code: 0: getstatic # 2- //Fieldjava/lang/System.out:Ljava/io/PrintStream-3: LDC # 3 // String Hallo Welt 5: invokevirtual # 4- //Methodjava/io/PrintStream.println:(Ljava/lang/String-)V8: return}

Menü