Как просмотреть код байта Java в eclipse IDE?
Иногда в Eclipse я нажимаю комбинацию клавиш, которые переводят меня на страницу редактора, которая отображает содержимое моего .class файла (байт-код). Кажется, я никогда не помню, что такое комбинация клавиш.
Может кто-нибудь, пожалуйста, дайте мне знать?
Или, другими словами, как можно увидеть собственный байт-код?
Ответы
Ответ 1
Средство просмотра файлов класса Eclipse по умолчанию показывает источник (см. ответ VonC), если он был связан с двоичными файлами, в противном случае он дает javap-подобный вид класса (с возможностью подключения источника). Я предполагаю, что это последнее, что вы ищете.
Я никогда не нашел способ чисто заставить Eclipse показать этот вывод, а не связанный источник. Возможно, вам нужен плагин Eclipse, который предоставляет Javap-функции (или интерфейс для javap). Посмотрите на плагины, в которых они "разбирают" (в отличие от "декомпилировать", например, jad).
Запрет подключаемого модуля, возможно, вы можете настроить внешний инструмент для выполнения javap, но он может плохо воспроизводиться с другими функциями eclipse.
Изменить:. Позвольте мне пояснить выше: если вы нажмете F3, Eclipse выполнит следующее (как правило, фактическая процедура может немного отличаться):
- Разрешает цель (если вы выбираете файл Java, это будет сам файл Java, если вы выбираете или ваш курсор находится над именем класса, это будет объявление класса, подобное для объявления метода и т.д.)..
- Ищет путь сборки (тот же самый проект) для файла Java, содержащего цель. Если найден, откроется редактор для записи, отображающий этот исходный файл Java.
-
Для объявлений класса/метода он продолжает поиск ссылок на пути сборки для файла класса, содержащего объявление. Если он найден, то
a) Если к файлу класса подключен источник, откройте редактор только для чтения связанного файла Java.
b) Если в файле класса нет источника, подключенного к нему, откройте панель только для чтения, показывающую дизассемблированный (javap-подобный) байт-код скомпилированного файла класса.
Мое предположение было бы то, что вы думаете, что выделенная последовательность клавиш на 3.b), но я не думаю, что есть. Но опять же, я хотел бы, чтобы меня здесь неправильно доказали.
Ответ 2
Вы можете использовать плагин ASM 4.0.
![enter image description here]()
Установка
Плагин Bytecode Outline может быть установлен из Eclipse Update Manager с сайтом обновления ObjectWeb Eclipse http://download.forge.objectweb.org/eclipse-update/
В качестве альтернативы, плагин можно загрузить с сайта ObjectWeb Forge и установить вручную в каталоге плагинов Eclipse.
Использование
Чтобы увидеть байт-код текущего файла .java или .class:
Окно → Показать вид → Другое → Java → Bytecode
Чтобы сравнить байт-код двух файлов .java или .class:
выберите два файла *.class или *.java → щелкните правой кнопкой мыши → Сравнить с → Каждый другой байт-код
или
выберите один *.class или *.java файл → щелкните правой кнопкой мыши → Сравнить с → Другим классным байткодом
http://asm.ow2.org/eclipse/index.html
Ответ 3
Используя следующую внешнюю конфигурацию инструмента, мы можем просмотреть java-байтовый код в eclipse с помощью javap
:
![введите описание изображения здесь]()
Чтобы получить всплывающее всплывающее окно, выберите Run
и выберите External Tools
и выберите External Tools configuration...
![введите описание изображения здесь]()
${system_path:javap}
используется для нахождения javap в JDK, используемом Eclipse. Вместо этого вы можете использовать абсолютный путь к javap.
${project_loc}
возвращает абсолютный путь к проекту. Это используется, поскольку я не мог найти переменную pre-define для использования, чтобы найти файл .class
ресурса и что javap
выполняется в каталоге проекта, а не в каталоге, содержащем файл .class
.
Среди аргументов, переданных в javap
:
-
bin
- это выходная папка по умолчанию для проектов Eclipse. Измените это на build/classes
или все, что используется проектом. Обратите внимание, что значение относится к ${project_loc}
; вы можете указать абсолютные пути.
-
${java_type_name}
используется для получения выбранного имени класса.
Вы можете выбрать файл Java в представлении проводника проекта или в представлении навигатора проекта или даже в виде Java в любом из представлений, а затем запустить внешний инструмент. Примечание. Этот подход работает не очень хорошо, когда вы выбираете метод, внутренний класс и т.д., А затем запускаете инструмент, поскольку они сами по себе не являются ресурсами, что приводит к сценарию, в котором ${project_loc}
будет пустым.
Источник
Dr. Garbage Tools - это набор плагинов Eclipse, выпущенных под лицензией Apache Open Source.
Установите Bytecode Visualizer с помощью Eclipse Marketplace.
Чтобы просмотреть байт-код:
-
Щелкните правой кнопкой мыши на файле .java
, выберите open with
и выберите other
, вы получите следующее всплывающее окно:
![введите описание изображения здесь]()
-
Найдите "Byteecode Visualizer" и выберите вариант, который он открывает файл, как показано ниже: вы можете найти опцию Bytecode, как показано:
![введите описание изображения здесь]()
Ответ 4
Ну... если в представлении Navigator View или Package Explorer выбрано .class
, достаточно простого F3, чтобы открыть декомпилированную версию этого в редакторе.
![http://img822.i_mageshack.us/img822/8735/eclipseclass.png]()
Ответ 5
Как намекнул пользователь833970: плагин байтового кода: http://andrei.gmxhome.de/bytecode/index.html
В своей базе он предоставляет представление "байт-код" для открытого Java файла, который вы искали.
Однако вы также можете назначить его для загрузки любого случайного .class файла вместо стандартного просмотра .class, и он превосходит его по-разному. Например, этот зритель фактически перескакивает в нужное место в байт-коде, если вы нажмете на элемент в представлении "Контур".
Ссылки на скачивание (для использования dropin) можно найти по указанной ссылке, сайт обновлений http://andrei.gmxhome.de/eclipse/. p >
Ответ 6
Я попробовал несколько разных решений для этого.
Byteecode Visualizer (доступно здесь: https://sourceforge.net/projects/drgarbagetools/), на мой взгляд, лучшее решение. Он аккуратно отображает вывод и дает понять, как он ссылается на исходный код. Я заметил несколько незначительных неверных истолкований на некоторых из байт-кодов, но вы можете понять суть этого.
К сожалению, он, похоже, не поддерживает Неона в момент написания. Однако он поддерживает Марс.
Ответ 7
Если вас действительно интересует байт-код, есть плагин eclipse, который позволяет вам открывать и редактировать байт-код файла .class с помощью текстового редактора.
https://github.com/itemis/jbc
![введите описание изображения здесь]()