Как открыть файл курса
Обновлено: 21.11.2024
javap — это инструмент дизассемблера Java, который можно использовать для открытия файла .class в удобочитаемом формате. javap находится в папке /bin каталога установки JDK. Декомпилятор Java (javap) отображает информацию о пакете, защищенных и общедоступных полях и методах переданных ему классов. Инструмент javap выводит свой вывод на стандартный вывод. В этой статье мы узнаем, как открыть файл .class в java на примере с помощью javap.
Синтаксис Javap
Пример команды Java в Java
Давайте воспользуемся Java Decomplier (инструментом Java) для декомпиляции нашего демо-класса.
Демо.java
Вывод:
при выполнении команды javap в cmd
javap com.javainterviewpoint.Demo
Будет создан следующий вывод
В приведенном выше коде мы не использовали какие-либо параметры вместе с командой javap в cmd, наиболее популярным параметром является «-c», этот параметр выводит инструкции, содержащие байт-коды Java для каждого из методов в классе. р>
Как использовать команду Javap в Eclipse
Запуск команды javap в eclipse можно выполнить только с помощью конфигурации внешнего инструмента. Перейдите к «Выполнить» -> «Внешние инструменты» -> «Конфигурации внешних инструментов», как показано на рисунке ниже.
Введите приведенную ниже информацию в новом окне конфигурации
- Нажмите "Программа" и нажмите "Создать".
- Укажите имя конфигурации, здесь мы указали «javap -verbose»
- Выберите расположение javap.exe в файловой системе. Обычно javap.exe находится в каталоге >/bin
- Выберите рабочий каталог, место, где находится файл класса (демонстрационный класс). Нажмите на рабочую область просмотра под корзиной, выберите пакет, в котором находится демонстрационный класс (здесь com/javainterviewpoint)
- В блоке "Аргументы" введите -verbose Demo, где -verbose – параметр, который вы хотите выполнить вместе с javap, а Demo – имя нашего класса.
- Нажмите «Применить» и «Выполнить».
Мы отобразим следующее
Вы также можете добавить различные параметры в блок "Аргументы" для различных выходных данных. Полный список опций, которые можно использовать вместе с дизассемблером Java, представлен здесь.
Другие интересные статьи, которые могут вам понравиться…
- Архитектура JVM: понимание внутреннего устройства JVM
- Объект и класс объектов в Java
- Разница между JDK, JRE и JVM
- Компоненты Java Development Kit (JDK)
- Что такое класс в Java с примером
- Как задать путь к классам для Java в Windows
- Исключение ClassNotFoundException и NoClassDefFoundError
- Как работает HashMap в Java
- Как сделать класс неизменяемым в Java
- Полиморфизм в Java: перегрузка и переопределение методов
- Типы полиморфизма в Java
- Типы наследования в Java
- Java не поддерживает проблему множественного наследования Diamond?
Оставить ответ Отменить ответ
Этот сайт использует Akismet для уменьшения количества спама. Узнайте, как обрабатываются данные ваших комментариев.
Я пытаюсь понять, что делает под капотом файл класса Java-апплета. Открытие его с помощью Блокнота или Textpad просто показывает кучу тарабарщины.
Есть ли какой-нибудь способ вернуть его в удобочитаемый формат, чтобы я мог попытаться понять, что он делает?
Просто семантика, разве не должно быть один = не два? == — это вопрос, а = — утверждение, и вы делаете утверждение о своей среде.
Можете ли вы прояснить этот вопрос? Моей первой мыслью было то, что вы хотите прочитать настоящий байт-код, но, похоже, на самом деле вы хотите декомпилировать чужой код.
@icco, = означает присваивание, == означает равенство. Он говорит, что (Окружающая среда == Windows с установленной VS2008) верно, не давая приказа установить Окружающую среду на Windows с установленной VS2008. Человек, который был оффтопиком и занудой.
Для записи == не объявляет равенство; он проверяет равенство. Вы можете написать true == false, и это примерно так же осмысленно, как написать Environment == Windows w/ VS 2008, т. е. вообще не имеет смысла.
17 ответов 17
jd-gui — лучший декомпилятор на данный момент. он может обрабатывать новые функции Java по сравнению с запылившимся JAD.
Пока ссылка куда-то ведет, я полагаю, это хорошо. Я не знаю, есть ли сейчас лучший декомпилятор Java, так как я давно не использовал Java.
Если вы не возражаете против чтения байт-кода, javap должен работать нормально. Это часть стандартной установки JDK.
Как указал @MichaelMyers, используйте
чтобы получить ассемблерный код JVM. Вы также можете перенаправить вывод в текстовый файл для лучшей видимости.
Вам нужен декомпилятор Java, для этого можно использовать инструмент командной строки javap. Кроме того, Java Decompiler HOW-TO описывает, как можно декомпилировать файл класса.
Примечание: это не сделает код точно таким же, как он был написан. то есть вы потеряете комментарии и, возможно, имена переменных, так что это будет немного сложнее, чем просто читать обычный исходный код. Если разработчик действительно ведет себя скрытно, он также обфусцирует свой код, что делает его еще более трудным для чтения.
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.
ДаренВ, спасибо за сообщение. JD-GUI пока не лучший декомпилятор. но я работаю над :)
Использование Jad для его декомпиляции, вероятно, является лучшим вариантом. Если код не был запутан, он даст нормальный результат.
Вам нужно использовать декомпилятор. Другие предлагали JAD, есть и другие варианты, JAD — лучший.
Я повторю комментарии, которые могут немного потеряться по сравнению с оригинальным исходным кодом. Это будет выглядеть особенно забавно, если код использует дженерики из-за стирания.
Подключаемый модуль JAD и/или JADclipse Eclipse, конечно.
Если файл класса, который вы хотите изучить, имеет открытый исходный код, вам не следует декомпилировать его, а вместо этого следует прикрепить исходные файлы непосредственно к вашей среде IDE. таким образом, вы можете просто просматривать код некоторого библиотечного класса, как если бы он был вашим собственным
Как было предложено, вы можете использовать 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.
Очень активный вопрос. Заработайте 10 репутации (не считая бонуса ассоциации), чтобы ответить на этот вопрос. Требование к репутации помогает защитить этот вопрос от спама и отсутствия ответа.
Не тот ответ, который вы ищете? Просмотрите другие вопросы с меткой Java-апплет класса Windows или задайте свой вопрос.
Связано
Связанные
Горячие вопросы о сети
Чтобы подписаться на этот RSS-канал, скопируйте и вставьте этот URL-адрес в программу для чтения RSS.
дизайн сайта / логотип © 2022 Stack Exchange Inc; вклады пользователей под лицензией cc by-sa. версия 2022.3.24.41762
Возможность декомпилировать файл класса Java очень полезна для любого разработчика Java, который хочет изучить исходный код любой библиотеки с открытым исходным кодом или частной библиотеки, используемой в проекте. Хотя я всегда предпочитаю прикреплять исходники в Eclipse для большинства распространенных библиотек, таких как JDK, это не всегда возможно с увеличением числа зависимостей. Декомпилятор Java (программа, которая может декомпилировать файлы классов Java для создания исходных файлов) очень полезен в такой ситуации. Используя декомпилятор Java, вы можете легко проверить исходный код любого файла .class. Благодаря Eclipse IDE и растущему количеству бесплатных подключаемых модулей, доступных для разработчиков Java, вы можете иметь в своем арсенале мощную декомпиляцию Java.
Раньше я использовал JadEclipse, плагин Eclipse, который хорошо работает с декомпилятором JAD, но зная, что декомпилятор JAD не поддерживает исходный код Java 1.5, я искал другой подходящий и полезный плагин Eclipse, который может декомпилировать . файл класса.
Мой поиск заканчивается на JD-Eclipse , это еще один бесплатный плагин Eclipse для некоммерческого и личного использования, который помогает вам получить исходный код из файлов классов.JD-Eclipse легко установить, и на его сайте есть подробное пошаговое руководство по установке подключаемого модуля JD-Eclipse. Если вы уже знакомы с установкой плагина Eclipse, то это несложно.
Как декомпилировать файл класса в Eclipse IDE
После установки и запуска JD-Eclipse вам, вероятно, потребуется перезапустить Eclipse после установки подключаемого модуля. Вы готовы декомпилировать файл класса Java из Eclipse. Чтобы декомпилировать файл класса, просто откройте любой из ваших проектов Java и перейдите к зависимостям библиотек Maven, чтобы увидеть файлы jar, включенные в ваш проект.
Просто разверните любой jar-файл, для которого у вас нет исходного кода в Eclipse, и щелкните файл .class. Теперь вы можете увидеть исходный код этого файла в редакторе Java, просто и элегантно, не правда ли.
Хотя я настоятельно рекомендую прикрепить исходный код для JAR в Eclipse, по крайней мере, для часто используемых библиотек, таких как JDK или Spring, поскольку качество декомпилированного кода и исходного кода различается. Исходный код обеспечивает лучшую видимость, а также показывает комментарии, в то время как декомпилированный код представляет собой лишь минимальную версию.
Как декомпилировать файл класса в Java – пример команды javap
Даже с мощной IDE Eclipse и подключаемым модулем нам иногда может понадобиться работать с командной строкой, особенно при работе на серверах разработки Linux, и неудобно переключаться туда и обратно для быстрого просмотра файла .class или получения некоторой информации из скомпилированного форма источника.
Благодаря команде javap вы можете декомпилировать файл класса на лету в командной строке. javap — это стандартный двоичный файл, который поставляется с установкой JDK и находится в каталоге JAVA_HOME/bin. javap похож на javac (компилятор java) и работает напрямую с файлом .class.
Чтобы использовать команду javap, вы должны иметь JAVA_HOME в системном пути. вы можете проверить это, набрав « javap » в командной строке, и если он не жалуется и вместо этого показывает какой-то вывод, как показано ниже, тогда все готово. Если он не распознает команду, значит, вам нужно установить путь, проверьте, как установить путь в Java, более подробные шаги.
Теперь посмотрим, что нам предлагает команда javap. У нас есть простой класс Java с одним полем и одним методом.
abc@localhost:~/java cat Hello.java
public class Hello <
private String version= "1.2" ;
public static void main ( String args []) <
System. вне . println("Бегу привет");
>
>
abc@localhost:~/java javap Hello
Собран из "Hello.java"
открытый класс Hello расширяет java. lang .Object <
public Hello () ;
public static void main ( java. lang .String []);
>
Похоже, что javap предоставляет только информацию, связанную с методом в файле .class. В нем также указывается конструктор, даже конструктор по умолчанию, добавленный компилятором Java. javap может предоставить больше информации в зависимости от его параметра командной строки, например, - private покажет все частные члены. вот пример запуска команды javap с параметром -private:
abc@localhost:~/java javap — private Hello
Собран из "Hello.java"
общедоступный класс Hello расширяет java. lang .Object <
private java. язык .String версия ;
публичный привет () ;
public static void main ( java. lang .String []);
>
Как посмотреть байт-код из файла .class
Команда javap также может отображать байт-коды из скомпилированных файлов классов. Просто запустите javap с параметром -c, и он напечатает байт-коды файла класса, как показано в примере ниже:
Это все о том, как декомпилировать файлы классов в Java и Eclipse IDE. JD-Eclipse — это простой в использовании подключаемый модуль eclipse, в котором подробно описаны шаги установки. если вы используете JDK ниже, чем Java 5, вы все равно можете использовать известный декомпилятор JAD и подключаемый модуль JADEclipse. Помимо этого есть еще много чего, что я не пробовал. Просто зайдите на рынок Eclipse, и вы увидите много таких.
В этой статье мы обсудим редактор файлов классов Java — инструмент, созданный на языке Java и используемый для редактирования скомпилированных классов Java. Мы можем декомпилировать и просмотреть созданные классы Java, но для их изменения нам потребуются такие инструменты, как редактор файлов классов Java.
Возможности редактора файлов классов Java
- Простой в использовании интерфейс, созданный с использованием Java Swing
- Позволяет модифицировать различные части файла класса, такие как методы, строки, константы и т. д.
- Проверки согласованности
Использование редактора файлов классов Java для редактирования скомпилированного класса Java
Извлеките сжатый файл и откройте файл JAR с именем ce.jar, как показано ниже.
Если мы не можем открыть файл, мы можем открыть командную строку/терминал и использовать следующую команду:
После открытия редактора мы открываем файл класса Java с помощью пункта меню «Файл» > «Открыть» и выбираем файл класса проводника.
Мы будем использовать следующий код в файле класса.
После того, как редактор откроет файл, мы включаем режим изменения в правом верхнем углу; этот режим по умолчанию отключен, как показано на изображении ниже. Кнопка станет синей, если она включена, и зеленой, если выключена.
После модификации мы можем изменить некоторые аспекты класса, перейдя в разные разделы редактора.
В разделе «Общие» редактора отображается имя класса и его родительский класс. Мы можем видеть и редактировать интерфейсы, если они есть в классе. Также существуют модификаторы доступа к классу, которые мы можем изменить, если захотим. Следующий раздел — это раздел Constant Pool, в котором отображаются все константы редактора в классе. Здесь мы можем изменить тип константы и ее значение. Мы можем добавить новые константы или удалить существующую. В разделе «Поля» редактора показаны поля с их модификаторами доступа, которые мы можем изменить. Последний раздел части редактора — это раздел «Методы», где перечислены все методы класса с их именами, модификаторами доступа и типами возвращаемых значений, которые можно редактировать, и мы можем их изменить.
После всех изменений сохраняем файл класса с помощью пункта меню File > Save. Мы также можем экспортировать все элементы, такие как имена полей, константы, методы и их значения в виде XML-файла, используя пункт меню «Файл»> «Экспорт в XML».
Статьи DelftStack написаны такими же фанатами программного обеспечения, как и вы. Если вы также хотите внести свой вклад в DelftStack, написав платные статьи, вы можете посетить страницу «Написать для нас».
сообщить об этом объявлении
Читайте также: