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

Возможный дубликат:
Существует ли редактор классов Java / байт-кода для редактирования инструкций?

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

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

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

5 ответов

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

javap -c com.mypackage.MyClass

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

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

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

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

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

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

Это из ASM (фреймворк манипулирования байт-кодом).

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

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

Редактировать их

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

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

От руки: JBE

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

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

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

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

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

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

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

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

Другие вопросы по тегам