Рубрики
Без рубрики

Декомпиляция классов в Java

Узнайте о декомпиляции в Eclipse и IntelliJ IDEA IDE, а также о опции командной строки, когда они недоступны.

Автор оригинала: Kyle Doyle.

1. введение

В этом уроке мы обсудим декомпиляцию классов Java. Когда исходный код недоступен, декомпиляция классов Java помогает отлаживать и понимать поведение исходного кода.

Давайте рассмотрим различные доступные варианты.

2. Декомпиляция в IDE

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

Для получения дополнительной информации об идеях, с которыми мы будем работать, ознакомьтесь с нашими статьями о том, как отлаживать в Eclipse и конфигурации для IntelliJ IDEA .

2.1. Затмение

Во-первых, в Eclipse нам нужен плагин, такой как Enhanced Class Decompiler (ECD) . Этот плагин использует пять различных декомпиляторов. Мы можем установить его с Eclipse Marketplace, а затем нам нужно перезапустить Eclipse.

Далее, ECD требует небольшого количества настроек для связывания файлов классов со средством просмотра декомпилятора классов:

Кроме того, нам нужно связать файлы ” .class without source”:

Наконец, мы можем использовать декомпилятор, нажав Ctrl+Щелчок левой кнопкой мыши на имени класса . Мы видим декомпилятор, используемый на вкладке файл в скобках.

В этом примере мы используем цветок папоротника:

2.2. IntelliJ IDEA

В отличие от Eclipse, IntelliJ IDEA предоставляет декомпилятор FernFlower по умолчанию .

Чтобы использовать его, мы просто Ctrl+Щелчок левой кнопкой мыши на имени класса и просматриваем код:

Кроме того, мы можем скачать исходный код. Загрузка исходного кода обеспечит фактический код и комментарии.

Например, класс аннотаций Component из приведенного выше скриншота включает Javadoc по использованию Component . Мы можем заметить разницу:

Хотя декомпиляция очень полезна, она не всегда дает полную картину . Полный исходный код дает нам полную картину.

3. Декомпиляция командной строки

До появления плагинов IDE командная строка использовалась для декомпиляции классов. Декомпиляторы командной строки также могут быть полезны для отладки байт-кода Java на удаленном сервере, недоступном с помощью IDE или GUI.

Например, мы можем декомпилировать с помощью командной строки JD с помощью простой команды jar:

java -jar JDCommandLine.jar ${TARGET_JAR_NAME}.jar ./classes

Не оставляйте без внимания параметр ./classes. Он определяет выходной каталог.

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

4. Заключение

Мы рассмотрели декомпиляцию в Eclipse и IntelliJ IDEA IDE, а также опцию командной строки, когда они недоступны.

Мы также рассмотрели разницу между связыванием исходного кода и декомпиляцией.