Действительно ли возможно просмотреть байт-код файла Класса? [дубликат]

98
задан Community 23 May 2017 в 12:02
поделиться

4 ответа

JDK поставляется с javap , который представляет собой инструмент для дизассемблирования байтового кода внутри файла класса. Возможно редактирование на уровне байтового кода. Взгляните на BCEL , java-библиотеку, предназначенную для чтения, управления и записи файлов классов.

Список инструментов и библиотек для редактирования байтового кода можно найти на java-net . Например, JBE , редактор байтового кода Java, который даже поставляется с графическим интерфейсом пользователя.

25
ответ дан 24 November 2019 в 05:14
поделиться

По моему опыту, jclasslib - одна из лучших программ просмотра байт-кода.

Что касается редакторов, то существует два типа: библиотеки для работы с байт-кодом и редакторы с графическим интерфейсом пользователя. Этот вопрос задавали несколько раз на SO, вы можете проверить ответы и ссылки, которые были предоставлены.

Только будьте осторожны, чтобы редактировать байт-код не так просто, как вы думаете. JVMS налагает множество ограничений на то, как должны быть файлы классов, и есть большая вероятность, что одно из ваших правок нарушит одно из них.

Проверьте эти другие вопросы:

Редактирование файла .class напрямую, игра с кодами операций

Можно ли просмотреть байт-код файла класса?

Программирование в байт-коде Java

3
ответ дан 24 November 2019 в 05:14
поделиться

Да. Вы можете использовать команду javap , включенную в JDK, чтобы увидеть байтовый код класса. Например:

javap -c com.mypackage.MyClass

Есть несколько библиотек и инструментов, которые помогут вам работать с байт-кодом Java, например ASM и Jasmin .

145
ответ дан 24 November 2019 в 05:14
поделиться

Для просмотра байткодов

Забудьте о javap! Лучший плагин, который я когда-либо использовал, - это «ASM - плагин Bytecode Outline для Eclipse»

http://asm.ow2.org/eclipse/index.html

Это от ASM (манипуляция с байт-кодом рамки).

Он показывает байт-коды (которые вы просили), элементы стека (стиль jvm) и то, как сгенерировать тот же результат (чтобы произвести те же байт-коды), используя методы фреймворка asm.

Еще лучше то, что это происходит, пока у вас выбран исходный код. Вам не нужно искать файл .class в каталоге bin, чтобы проверить его байт-код.

Чтобы отредактировать их

Используя код:

  • ASM: Посетители основаны, очень, очень быстро.
  • BCEL: Загружает байт-код как описание файла класса в память.
  • Javassit: самый простой в использовании, позволяет выполнять сопоставление с образцом и замену выражений.

От руки: JBE

18
ответ дан 24 November 2019 в 05:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: