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


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

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

  • Environment == Windows w / VS 2008 установлен.
17 94

17 ответов:

JD графический пользовательский интерфейс является лучшим декомпилятором на данный момент. он может обрабатывать более новые функции в Java, по сравнению с getting-dusty 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 Decompiler HOW-TO описывает, как можно декомпилировать файл класса.

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

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

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

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

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

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

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

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

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

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

JAD и/или jadclipse Eclipse плагин, конечно.

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

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

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

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

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

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

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

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

javap -c <name of java class file> 

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

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

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