Как я могу открыть файлы Java .class понятным для человека способом?
Вопрос
Я пытаюсь выяснить, что файл класса 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