Можно ли просмотреть байт-код файла класса?
Возможный дубликат:
Есть ли редактор 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).