Frage

Eigentlich ist die Frage etwas umfassender.Ich weiß, dass Javac eine Java-Datei in einen Bytecode, eine Klassendatei, kompiliert.Die Klassendatei sollte also JVM-Anweisungen und all das enthalten.Andererseits besteht die einzige Möglichkeit, diese Anweisungen anzuzeigen, darin, die Klassendatei mit javap -c zu dekompilieren.Aber es ist keine Dekompilierung, oder?Denn wenn es dekompiliert würde, würde es eine Java-Datei erzeugen.Ich vermute hier also, dass javac die Java-Datei etwa zweimal kompiliert (was eigentlich nicht stimmt, aber nehmen wir das der Einfachheit halber an), zuerst für die JVM-Anweisung, dann für den Bytecode, also dekompiliert javap -c vom Bytecode in die JVM-Anweisungen.Jvm sollte Bytecode verstehen, daher kann es keine Anweisungen verstehen.Ich bin hier etwas verwirrt.Könnte jemand erklären, was hier los ist?

War es hilfreich?

Lösung

javap ist nicht decompile den bytecode, es zerlegt es.Um den Unterschied zu erklären, können wir die Begriffe umgekehrt umschalten: Zusammenstellung übersetzt menschlich lesbarer Code in Bytecode, während die Montage Montageanweisungen in Bytecode übersetzt.

Andere Tipps

javap Zeigt eine für Menschen lesbare Form von JVM-Anweisungen an.JVM-Anweisungen sind Codes für JVM.Was javap Shows ist Assemblersprache.

Wenn Sie den Bytecode in besser lesbarer Form sehen möchten, verwenden Sie einen Java-Decompiler, z. B. jad.Es gibt mehrere UI-Wrapper für Jad, einschließlich Plug-In für Eclipse.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top