556 Stimmen

Wie kann ich Java-Klassendateien "dekompilieren"?

Welches Programm kann ich verwenden, um eine Klassendatei zu dekompilieren? Erhalte ich tatsächlich Java-Code oder ist es nur JVM-Assembler-Code?

Auf Fragen zur Java-Leistung auf dieser Website sehe ich oft Antworten von Leuten, die die Java-Klassendatei "dekompiliert" haben, um zu sehen, wie der Compiler bestimmte Dinge optimiert.

9voto

John Meagher Punkte 21478

Die meisten Dekompilierer für Java basieren auf JAD . Es ist ein großartiges Tool, aber leider wurde es seit einiger Zeit nicht mehr aktualisiert und kann mit Java 1.5+ Klassen nicht gut umgehen. Ich habe noch kein Tool gesehen, das mit 1.5+ Klassen richtig umgehen kann.

6voto

Paulo Guedes Punkte 7028

Werfen Sie einen Blick auf cavaj .

6voto

kdazzle Punkte 4071

Alle bisher aufgelisteten JAD-Links scheinen defekt zu sein, also habe ich diese Seite gefunden. Funktioniert prima (zumindest für Linux)! Auf Ubuntu 11.10 musste ich aus irgendeinem Grund die statische Version herunterladen.

http://www.varaneckas.com/jad

5voto

Berlin Brown Punkte 11220
  • JAD funktioniert und ist einfach.

  • Wenn Sie nur die Methoden sehen wollen, verwenden Sie javap.

5voto

Antimony Punkte 35481

Wenn Sie sehen wollen, wie der Java-Compiler bestimmte Dinge tut, brauchen Sie keine Dekompilierung, sondern eine Disassemblierung. Bei der Dekompilierung wird der Bytecode in Java-Quellcode umgewandelt, was bedeutet, dass viele Low-Level-Informationen verloren gehen, und wenn Sie sich über die Compiler-Optimierung Gedanken machen, sind das wahrscheinlich genau die Informationen, die Sie interessieren.

Wie auch immer, ich habe zufällig ein Buch geschrieben quelloffener Java-Disassembler . Im Gegensatz zu Javap funktioniert dies auch bei hochgradig pathologischen Klassen, so dass Sie auch sehen können, was Obfuskationstools mit Ihren Klassen anstellen. Es kann auch dekompilieren, obwohl ich das nicht empfehlen würde.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X