Я пытаюсь выяснить, что делает файл класса Java-апплета под капотом. Открытие его с помощью Блокнота или Текстовой панели просто показывает кучу глупостей.
Есть ли способ вернуть его в удобочитаемый формат, чтобы я мог попытаться понять, что он делает?
Вы можете прояснить этот вопрос? Я сразу подумал, что вы хотите прочитать настоящий байт-код, но похоже, что вы действительно хотите декомпилировать чужой код.
@icco, = означает присвоение, == означает равенство. Он говорит, что (Environment == Windows с установленной VS2008) верно, не давая указания установить Environment в Windows с установленной VS2008. Человек, который был оффтопом и ботаником.
Для записи == не декларирует равенство; он проверяет равенство. Вы можете написать true == false, и это примерно так же значимо, как и запись Environment == Windows w / VS 2008, то есть вообще не имеет смысла.




Использование Джад для декомпиляции, вероятно, ваш лучший вариант. Если код не был запутан, результат будет нормальным.
Это скомпилированный код, вам нужно использовать декомпилятор, например JAD: http://www.kpdus.com/jad.html
Вам нужен декомпилятор Java, для этого вы можете использовать инструмент командной строки javap. Кроме того, ДЕКОМПИЛЯТОР Java. описывает, как вы можете декомпилировать файл класса.
то, что вы ищете, - это декомпилятор java. Я рекомендую JAD http://www.kpdus.com/jad.html. Он бесплатный для некоммерческого использования и выполняет свою работу.
Примечание: это не сделает код точно таким же, как был написан. то есть вы потеряете комментарии и, возможно, имена переменных, поэтому это будет немного сложнее, чем просто читать обычный исходный код. Если разработчик действительно скрытный, он также запутает свой код, что сделает его еще более трудным для чтения.
Как было предложено, вы можете использовать JAD для его декомпиляции и просмотра файлов. Чтобы упростить чтение, вы можете использовать плагин JADclipse для eclipse, чтобы напрямую интегрировать JAD в eclipse, или использовать DJ Java Decompiler, который намного проще в использовании, чем 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
JAD - отличный вариант, если в результате вам нужен читаемый код Java. Если вы действительно хотите углубиться во внутреннее устройство формата файла .class, вам понадобится javap. Он связан с JDK и позволяет «декомпилировать» шестнадцатеричный байт-код в читаемый ASCII. Создаваемый им язык по-прежнему является байт-кодом (не похожим на Java), но он довольно читабелен и чрезвычайно поучителен.
Кроме того, если вы хотите В самом деле, вы можете открыть любой файл .class в шестнадцатеричном редакторе и напрямую прочитать байт-код. Результат идентичен использованию javap.
jd-gui - лучший декомпилятор на данный момент. он может обрабатывать новые функции Java по сравнению с пылящим JAD.
Насколько актуален этот ответ в 2020 году?
Пока ссылка куда-то идет, я полагаю, это хорошо. Я бы не знал, есть ли сейчас лучший декомпилятор Java, поскольку я давно не использовал Java.
Вам нужно использовать декомпилятор. Другие предлагали JAD, есть другие варианты, JAD - лучший.
Я повторю комментарии, которые вы можете немного потерять по сравнению с исходным кодом. Особенно забавно будет выглядеть, если в коде используются дженерики из-за стирания.
Обязательно JAD и / или JADclipse Eclipse plugin.
Декомпилировать Applet.class не нужно. Исходный код общедоступных классов Java API поставляется с JDK (если вы решите установить его) и лучше читается, чем декомпилированный байт-код. Вы можете найти его в сжатом виде в src.zip (находится в папке установки JDK).
Если файл класса, который вы хотите изучить, является открытым исходным кодом, вы не должны декомпилировать его, а вместо этого прикрепите исходные файлы непосредственно в вашу среду IDE. таким образом, вы можете просто просмотреть код некоторого библиотечного класса, как если бы он был вашим собственным
cpuguru, если ваш апплет был скомпилирован с использованием javac 1.3 (или менее), лучшим вариантом будет использование Jad.
К сожалению, последний JDK, поддерживаемый JAD 1.5.8 (14 апреля 2001 г.), - это JDK 1.3.
Если ваш апплет был скомпилирован с помощью более позднего компилятора, вы можете попробовать JD-GUI: этот декомпилятор находится в стадии разработки, тем не менее, он генерирует правильные исходные коды Java, большую часть времени, для классов, скомпилированных с JDK 1.4, 1.5 или 1.6.
DarenW, спасибо за ваш пост. JD-GUI еще не лучший декомпилятор ... но я над этим работаю :)
jd-gui "http://code.google.com/p/innlab/downloads/detail?name=jd-gui-0.3.3.windows.zip&can=2&q=" - лучший и удобный вариант для декомпиляции файла .class ....
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
Просто семантика, разве не должно быть одно = не два? == - это вопрос, а = - это утверждение, и вы делаете заявление о своей среде.