2013-05-27 17 views
15

Pracuję nad manipulacją/generowaniem kodu bajtowego w Javie i zastanawiałem się, czy istnieje prosty sposób sprawdzenia kodu bajtowego. Nie chcę dekompilować pliku, chciałbym faktycznie spojrzeć na skompilowany kod bajtowy. Nie muszę tego edytować. Wszelkie linki lub programy do robienia tego byłyby akceptowalnymi odpowiedziami.Czy możliwe jest przeglądanie plików klasy Java według kodu bajtowego

+0

Zazwyczaj można to zrobić bezpośrednio z poziomu IDE. Może z niewielką pomocą wtyczki. – maba

+2

Myślę, że 'javap' jest tym, czego szukasz. Polecenie dostarczane z pakietem JDK. –

+0

spróbuj javap -c classfile – Satya

Odpowiedz

2

Pracowałem nad decompiler, który ma kodowany kolorami kod bajtowy (który uważam za znacznie bardziej czytelny niż javap). Może również wyprowadzać kod Java lub pośredni "kod bajtowy AST".

2

The javap command-line tool, który jest dołączony do pakietu Oracle JDK, zapewnia szczegółowy zrzut tekstowy plików .class wraz ze stałą pulą i zawartością bajtów wszystkich funkcji. Po prostu uruchom go za pomocą -v, aby uzyskać pełny zrzut.

+0

ale chcę zobaczyć, co kompilator czyta, gdy czyta plik, aby utworzyć własne syntetyczne klasy. – Popgalop

+0

@Popgalop to, co odczytuje kompilator, jest faktycznym bajtem kodu, który nie jest formatem tekstowym. Sądzę, że możesz otworzyć go w edytorze szesnastkowym i użyć [tego odnośnika] (http://docs.oracle.com/javase/specs/jvms/se5.0/html/ClassFile.doc.html), aby sam go przeanalizować , ale jeśli chcesz zrzut czytelny dla człowieka, 'javap -v' jest odpowiedzią. – Oak

6

Nie wiem, co dokładnie trzeba, ale oprócz javap, który jest narzędziem wiersza poleceń do wyświetlania kodu bajtowego, można spojrzeć na javassist, asm i cglib - pozwalają one do analizowania kodu bajtowego z kodu java .

39

Odkąd chciałeś być prowadzony do jakiegoś programu, który może łatwo pokazać kod bajtowy, moją sugestią jest użycie IntelliJ IDEA, ponieważ ma wbudowaną obsługę wyświetlania kodu bajtowego.

Oto przykład jak to zrobić (może też być odwzorowane na niektórych klawiszy do wyboru):

enter image description here

enter image description here

Jest to bardzo proste, a to może z pewnością być zrobione w Zaćmienie lub NetBeans.

+0

gdzie są numery linii? Co to jest L0, L1 .. oznacza ???? – voipp

+0

Czy jest to również dostępne w Androidzie Studio? Przynajmniej dla klasy compield dla JVM (jak lokalne testy jednostek itp.). – PSIXO

+0

@PSIXO Nie wiem, używam tylko IntelliJ-as-is. – maba

Powiązane problemy