Как я могу открыть файлы Java .class понятным для человека способом?

StackOverflow https://stackoverflow.com/questions/76314

  •  09-06-2019
  •  | 
  •  

Вопрос

Я пытаюсь выяснить, что файл класса Java-апплета делает под капотом.Открывая его с помощью Блокнота или текстовой панели, вы просто видите кучу чепухи.

Есть ли какой-нибудь способ преобразовать его обратно в несколько удобочитаемый формат, чтобы я мог попытаться понять, что он делает?

  • Окружающая среда == Установлена Windows с версией 2008.
Это было полезно?

Решение

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

Другие советы

Если вы не возражаете против чтения байт-кода, javap должен работать нормально.Это часть стандартной установки JDK.

Usage: javap <options> <classes>...

where options include:
   -c                        Disassemble the code
   -classpath <pathlist>     Specify where to find user class files
   -extdirs <dirs>           Override location of installed extensions
   -help                     Print this usage message
   -J<flag>                  Pass <flag> directly to the runtime system
   -l                        Print line number and local variable tables
   -public                   Show only public classes and members
   -protected                Show protected/public classes and members
   -package                  Show package/protected/public classes
                             and members (default)
   -private                  Show all classes and members
   -s                        Print internal type signatures
   -bootclasspath <pathlist> Override location of class files loaded
                             by the bootstrap class loader
   -verbose                  Print stack size, number of locals and args for methods
                             If verifying, print reasons for failure

Если вам нужен java-декомпилятор, вы можете использовать инструмент командной строки javap чтобы сделать это.Также, РУКОВОДСТВО ПО декомпиляции Java описывает, как вы можете декомпилировать файл класса.

то, что вы ищете, - это декомпилятор java.Я рекомендую ДЖАДА http://www.kpdus.com/jad.html Это бесплатно для некоммерческого использования и позволяет выполнить поставленную задачу.

Примечание:это не сделает код точно таким же, как тот, что был написан.т. е.вы потеряете комментарии и, возможно, имена переменных, так что это будет немного сложнее, чем просто читать обычный исходный код.Если разработчик действительно скрытен, он также запутал свой код, что еще больше затруднит его чтение.

cpuguru, если ваш апплет был скомпилирован с javac 1.3 (или меньше), лучшим вариантом будет использовать Jad.

К сожалению, последним JDK, поддерживаемым JAD 1.5.8 (14 апреля 2001 г.), является JDK 1.3.

Если ваш апплет был скомпилирован с помощью более нового компилятора, вы могли бы попробовать JD-графический интерфейс пользователя :этот декомпилятор находится в стадии разработки, тем не менее, большую часть времени он генерирует корректные исходные тексты Java для классов, скомпилированных с помощью JDKs 1.4, 1.5 или 1.6.

Даренв, спасибо вам за ваш пост.JD-GUI пока не самый лучший декомпилятор ...но я работаю над этим :)

Как указал @MichaelMyers, используйте

javap -c <name of java class file> 

чтобы получить код сборки JVM.Вы также можете перенаправить выходные данные в текстовый файл для лучшей наглядности.

javap -c <name of java class file> > decompiled.txt

Используя Джад декомпилировать это, вероятно, ваш лучший вариант.Если код не был запутан, он выдаст приемлемый результат.

Это скомпилированный код, вам нужно будет использовать декомпилятор, такой как JAD: http://www.kpdus.com/jad.html

Вам нужно использовать декомпилятор.Другие предлагали JAD, есть и другие варианты, JAD - лучший.

Я повторю комментарии, которые вы можете немного потерять по сравнению с исходным кодом.Это будет выглядеть особенно забавно, если в коде использовались дженерики из-за стирания.

Конечно, плагин JAD и / или JADclipse Eclipse для Eclipse.

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

jd-графический интерфейс пользователя "http://code.google.com/p/innlab/downloads/detail?name=jd-gui-0.3.3.windows.zip&can=2&q =" это лучший и удобный вариант для декомпиляции файла .class....

Как было предложено, вы можете использовать JAD для его декомпиляции и просмотра файлов.Чтобы упростить чтение, вы можете использовать плагин JADclipse для eclipse для интеграции JAD непосредственно в eclipse или использовать DJ Java Decompiler, который намного проще в использовании, чем JAD командной строки

JAD - отличный вариант, если в результате вы хотите получить читаемый Java-код.Если вы действительно хотите покопаться во внутренностях .class однако формат файла, который вам понадобится javap.Он поставляется в комплекте с JDK и позволяет вам "декомпилировать" шестнадцатеричный байт-код в читаемый ASCII.Язык, который он создает, по-прежнему является байт-кодом (ничего похожего на Java), но он достаточно читабелен и чрезвычайно поучителен.

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

Нет необходимости в декомпиляции Applet.class.Исходный код общедоступных классов Java API поставляется вместе с JDK (если вы решите его установить) и читается лучше, чем декомпилированный байт-код.Вы можете найти сжатый файл в src.zip (находится в вашей папке установки JDK).

CFR - еще один java - декомпилятор это отличный декомпилятор для современной Java, написанный на Java 6.

вы также можете использовать доступные онлайн-декомпиляторы java.Например, для http://www.javadecompilers.com

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top