Зачем конвертировать CLASS в TXT?
Файл .class представляет собой скомпилированный двоичный байт-код и не может быть прочитан как текст без обработки. Разработчики дизассемблируют или декомпилируют его в .txt, чтобы изучить работу класса, когда исходный код .java недоступен, сравнить две скомпилированные версии или задокументировать публичный API библиотеки.
Способы конвертации CLASS в TXT
javap (JDK) FREE
Запустите javap -c -p MyClass в терминале, чтобы вывести инструкции байт-кода, затем перенаправьте вывод в файл с помощью > MyClass.txt. Добавьте -verbose для получения сведений о пуле констант и версии класса.
JD-GUI OPEN-SOURCE
Перетащите файл .class в JD-GUI, и в редакторе появится реконструированный исходный код Java. Используйте «File > Save All Sources», чтобы экспортировать его как файл .java (обычный текст) и при необходимости переименуйте в .txt.
CFR OPEN-SOURCE
Запустите java -jar cfr.jar MyClass.class > MyClass.txt, чтобы перенаправить реконструированный исходный код Java напрямую в текстовый файл.
Об этих форматах
Файл CLASS представляет собой скомпилированный байт-код Java - результат работы javac из исходного файла .java. Чтобы запустить его, вам необходимо установить Java (JDK), а затем…
Открыть детали .CLASS →Файл TXT - это простой неформатированный текст, самый элементарный формат документов на любом компьютере. Дважды щелкните по нему: Windows откроет его в Notepad, macOS - в TextEdit, Linux -…
Открыть детали .TXT →Качество и на что обратить внимание
- Файл
.classначинается с магических байтов0xCAFEBABE- открытие его в текстовом редакторе покажет «бинарный мусор», а не читаемое содержимое. - Вывод
javap- это мнемоники байт-кода (invokevirtual,aloadи т. д.), а не исходный код Java; используйте JD-GUI или CFR, если вам нужен результат, похожий на исходный код. - Добавьте
-verboseк командеjavap, чтобы включить в вывод мажорную версию файла класса, пул констант и таблицы атрибутов.
Часто задаваемые вопросы
В чем разница между выводом javap и выводом декомпилятора?
javap показывает инструкции байт-кода (мнемоники); JD-GUI и CFR реконструируют синтаксис исходного кода Java - оба варианта создают обычный текст, но значительно различаются по читаемости.Нужно ли устанавливать что-то дополнительное для использования javap?
javap поставляется с каждой установкой JDK; если у вас установлены средства разработки Java, он уже доступен.Можно ли конвертировать файл .class в .txt без установки Java?
javap, JD-GUI и CFR требуется Java, поэтому необходима установка JDK или JRE.