Как просмотреть байт-код Java в Eclipse IDE? - PullRequest
20 голосов
/ 17 июня 2010

Иногда в Eclipse я нажимаю комбинацию клавиш, которая приводит меня на страницу редактора, которая показывает содержимое моего файла .class (байт-код).Кажется, я никогда не смогу вспомнить, что это за комбинация клавиш.

Может кто-нибудь сообщить мне об этом?

Или, другими словами, как можно увидеть собственный байт-код?

Ответы [ 7 ]

11 голосов
/ 17 июня 2010

Средство просмотра файлов класса Eclipse по умолчанию показывает источник (см. Ответ VonC), если он был связан с двоичными файлами, в противном случае он дает представление класса, похожее на javap (с возможностью присоединения источника).Я предполагаю, что это последнее, что вы ищете.

Я никогда не находил способ чисто заставить Eclipse показать этот вывод, а не связанный источник.То, что вы, вероятно, хотите, это плагин Eclipse, который обеспечивает Javap-подобную функциональность (или интерфейс для javap).Ищите плагины, в которых говорится, что они «разбираются» (в отличие от «декомпилировать», например, jad).

Запретив плагин, вы, вероятно, можете настроить внешний инструмент для выполнения javap, но он может плохо работать сособенности eclipse.

Edit: Позвольте мне прояснить вышесказанное: если вы нажмете F3, Eclipse сделает следующее (как правило, фактическая процедура может немного отличаться):

  1. Разрешает цель (если вы выбираете файл Java, это будет сам файл Java; если вы выбираете или курсор находится над именем класса, это будет объявление класса, аналогичное объявлению метода,и т. д.)
  2. Выполняет поиск пути сборки (сначала тот же проект) для поиска файла Java, содержащего цель.Если файл найден, открывается редактируемый редактор, отображающий этот исходный файл Java.
  3. Для объявлений класса / метода он продолжает поиск ссылок в пути сборки для файла класса, который содержит объявление.Если он найден, то

    a) Если к файлу класса был присоединен исходный файл, откройте редактор только для чтения связанного файла Java.

    b) Если файл классак нему не подключен источник, затем откройте панель только для чтения, показывающую дизассемблированный (подобный javap) байт-код файла скомпилированного класса.

Я думаю, выМы думаем, что есть специальная последовательность клавиш для 3.b), но я не думаю, что она есть.Но, опять же, я хотел бы, чтобы меня здесь доказали.

8 голосов
/ 11 августа 2013

Вы можете использовать ASM 4.0 Plugin.

enter image description here

Установка

Плагин Bytecode Outline можно установить из диспетчера обновлений Eclipse с сайта обновления ObjectWeb Eclipse http://download.forge.objectweb.org/eclipse-update/ Кроме того, плагин можно загрузить с сайта ObjectWeb Forge и установить вручную в каталог плагинов Eclipse.

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

Чтобы увидеть байт-код текущего файла .java или .class:

Окно -> Показать представление -> Другое -> Java -> Байт-код

Для сравнения байт-кода двух файлов .java или .class:

выберите два файла * .class или * .java -> щелкните правой кнопкой мыши -> Сравнить с -> Байт-код друг друга

или

выберите один файл * .class или * .java -> щелкните правой кнопкой мыши -> Сравнить с -> Другой байт-код класса

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

7 голосов
/ 27 ноября 2015

Используя следующую внешнюю конфигурацию инструмента, мы можем просмотреть Java-байт-код в затмении с помощью javap:

enter image description here

Чтобы получить вышеуказанноеВо всплывающем окне выберите параметр Run, выберите External Tools и выберите External Tools configuration...

enter image description here

${system_path:javap} используется для поиска javap в JDKиспользуется Затмением.Вместо этого вы можете использовать абсолютный путь к javap.

${project_loc} возвращает абсолютный путь к проекту.Это используется, поскольку я не смог найти предопределенную переменную для использования, чтобы найти файл .class ресурса, и именно поэтому javap запускается в каталоге проекта вместо каталога, содержащего файл .class.

Среди аргументов, переданных javap:

  • bin - папка вывода по умолчанию для проектов Eclipse.Измените это на build/classes или на то, что используется проектом.Обратите внимание, что значение относительно ${project_loc};вместо этого вы можете указать абсолютные пути.
  • ${java_type_name} используется для получения имени выбранного класса.

Вы можете выбрать файл Java в представлении проводника проекта или представлении навигатора проекта,или даже тип Java в любом из представлений, а затем запустите внешний инструмент.Обратите внимание - этот подход не очень хорошо работает, когда вы выбираете метод, внутренний класс и т. Д., А затем запускаете инструмент, поскольку они сами по себе не являются ресурсами, что приводит к сценарию, в котором ${project_loc} будет пустым.

Источник


Д-р.Garbage Tools - это набор подключаемых модулей Eclipse, выпущенных по лицензии Apache Open Source.

Установка Визуализатор байт-кода с использованием Eclipse Marketplace.

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

  1. Щелкните правой кнопкой мыши файл .java, выберите open with и выберите other, вы получите следующее всплывающее окно:
    enter image description here

  2. Выполните поиск в «Визуализаторе байт-кода» и выберите опцию, в которой он открывает файл, как показано ниже, вы можете найти опцию Байт-кода, как показано:
    enter image description here


Декомпилятор расширенного класса

"Окно> Настройки> Общие> Редакторы> Ассоциации файлов"

Изменить значение по умолчанию для оба .class Ассоциации .

"*. class ": "Средство просмотра декомпилятора класса" выбрано по умолчанию.

"*. класс безsource":« Средство просмотра декомпилятора классов »выбрано по умолчанию.

enter image description here

3 голосов
/ 17 июня 2010

Хорошо ... если .class выбрано в представлении Navigator или Package Explorer, достаточно простого F3 , чтобы открыть его декомпилированную версию в редакторе.

http://img822.i_mageshack.us/img822/8735/eclipseclass.png

1 голос
/ 20 февраля 2013

Как подсказал пользователь833970: плагин Outline Bytecode: http://andrei.gmxhome.de/bytecode/index.html

В своей основе он предоставляет представление «байт-код» для открытого в настоящий момент Java-файла, который вы искали.

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

Ссылки для скачивания (для использования) можно найти по вышеупомянутой ссылке, сайт обновлений http://andrei.gmxhome.de/eclipse/.

0 голосов
/ 10 августа 2017

Если вас действительно интересует байт-код, есть плагин eclipse, который позволяет открывать и редактировать байт-код файла .class с помощью текстового редактора.

https://github.com/itemis/jbc

enter image description here

0 голосов
/ 24 ноября 2016

Я пробовал несколько разных решений для этого. Визуализатор байт-кода (доступен здесь: https://sourceforge.net/projects/drgarbagetools/), на мой взгляд, является лучшим решением. Он аккуратно отображает вывод и ясно показывает, как он ссылается на исходный код. Я заметил несколько незначительных неправильных толкований некоторых байт-кодов, но вы можете понять суть.

К сожалению, на момент написания, похоже, он не поддерживал Neon. Хотя он поддерживает Марс.

...