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

Возможный дубликат:
Есть ли редактор java classfile/bytecode для редактирования инструкций?

Исходный код Java скомпилирован в байт-код, который фактически находится в файле класса. Можно ли просмотреть байт-код скомпилированного класса?

Если это возможно, можно ли его отредактировать?

Есть ли плагин eclipse для этого?

Ответ 1

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

javap -c com.mypackage.MyClass

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

Ответ 2

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

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

Ответ 3

Чтобы просмотреть байт-коды

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

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

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

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

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

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

Использование кода:

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

Рукой: JBE

Ответ 4

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

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

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

Проверьте следующие вопросы:

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

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

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

Ответ 5

Попробуйте использовать - dirtyJOE - Java General Editor - сложный редактор и средство просмотра для скомпилированных java файлов (файлы .class).