Каталог расширений

Популярные теги

3gp       avi       fb2       jpg       mp3       pdf      

Как отредактировать файл class


Помогите - Как редактировать файлы .Class? | Bukkit по-русски

На данный момент я знаю о InClassTranslator что в принципе не поможет проблеме. Он просто удаляет содержимое переменной,а не вывод её самой.

Таким образом есть программка, которая позволяет просматривать содержимое самих классов т.е. исходник код ява-скрипта: jd-gui .Полезная штука. С помощью её нахожу код, который нужно отредактировать или удалить, но становится вопрос: Как это сделать? Можно ли Eclipc-ом, и как это сделать что бы потом скомпилировать обратно в .class без ошибок?

Еще есть такая штука как MCP которая распакует за вас весь клиент майна и у вас будет возможность редактировать файлы формата .java с чем Eclipc или любой другой Ide редактор справится без каких либо проблем. Но не так то все просто. Сам по себе MCP не всегда может правильно распаковать и запаковать клиент, т.к. есть множество обстоятельств :

- Если клиент с модами;
- Если вы уже что-то правили левыми путями;
- Если IDE редактору что-то не понравится, то он просто напросто вас пошлет. Возможно это моя недоработка за счет малоопытности в dev-java , но все же.

В целом нужна помощь старожил в этом плане.

 

Редактирование Class-файлов - Java/SIS приложения и Игры

Структура программы После запуска программы ми видим главное окно программы с кучей вкладок. На этих в кладках распложенны различные настройки (опишу их ниже). Для начала разберёмся с названиями вкладок:

Вкладка Общее - с этой вкладки начинаеться и закакнчиваеться процесс адаптации. На ней находяться элементы управления позволяющие открыть/закрыть/адаптировать приложение. Вкладка Основные опции - на этой вкладке как следует из названия расположены самые основные опции. Вкладка Дисплей - на этой вкладке расположены опции касающиеся экрана (дисплея) телефона и приложения.

Вкладка Изображения - на этой вкладке находяться опции связанные с изображениями (PNG) используемые Java приложением.

Вкладка Клавиатура - всё что качаеться клавишь телефона и приложения. Вкладка MANIFEST.MF - Редактор информации о Java приложении.

Вкладка Опции - там есть пара опций для автоматизации процесса адаптации.

Адаптирование Так вот для адаптировани приложения нам нужно указать путь до Java приложения (jar файла) - это делаеться кнопкой - "Выбрать Jar". Далее для загрузки приложения в программу нажимаем кнопку "Открыть". После этого произщводим выбот нужных настроек (следует обратить внимание на опции на вкладке дисплей -размер экрана приложения и телефона и на опции на вкладке клавиатура - раскладка клавиатуры приложения и телефона). А затем нажимаем кнопку "Адаптировать" и процесс адаптации пошёл. За ним можно наблюдать в списке выше, где отображаються выполняемые действия.

Настройки По вкладкам: Основные опции При адаптации использовать Canvas - Выбираем Canvas, который будем использовать при адаптайии. В большинстве случаев должен подойти Canvas Classic. Canvas'ы семейства TouchScreen следует выбирать тем у кого телефон с сенсорным экраном. Создать JAD файл - Создает к приложению JAD файл. Он нужен для установки приложения на некоторые телефоны.

Создать резервную копию файла - Перед адаптацией оригинальное приложение сохраняеться в файл название_приложения.jar.bak .

Не добавлятьфайлы с мелодиями - убирает из приложения все звуковые файлы (это позволяет уменьшить размер приложения).

Не адаптировать клавиатуру - эта опция означает, что Вы хотите попробовать адаптировать экран под свой, а кнопки у Вас и так работают.

Включить в дистрибутив приложения API - эта опция позволяет включить в дистрибутив дополнительные API? которых у вас в телефоне нет, а приложением они используються. (Узнать о том, что они используються можно в Log'е после нажатия кнопки открыть. Если приложение обнаружит API он напишет строчку "Обнаружено: Данный мидлет использует - "? в которой будет указано название API).

Дисплей Размер дисплея вашего телефона - Выбираем размер SetFullScree=True - опция, которая должна убирать софт полоску.

Размер дисплея в приложении - под какой экран написано приложение. Отклонение по высоте - Числа буду изменяться с учётом возможного отклонения значений. К примеру размер экрана по высоте 220px, а в этой опции указано отклонение 10, то в коде будут меняться вс е числа в дапозоне от 210px до 230px. Способ изменения чисел - каким образом числа будутизменяться в коде прилождения - самый качественный способ - это способ полного диассемблирования. Затем по качеству идёт Диассемблирование class файлов, а затем по маске.

Изображения Оптимизировать PNG графику - все графические файлы PNG будут пропущенны черз программу для оптимизации изображений, что позволяет кменьшить их размер. Изменять размер изображений - Для адаптации экрана в приложениях иногда бывает мало заменить числа в коде, ещё надо изменить размеры изображений, которые используються java мидлетом.

Клавиатура Раскладка телефона - Раскладка клавиатуры Вашего телефона. Раскладка с использованием которой написано приложение - та раскладка, которую использует приложение при своей работе. Если вы не знаете от каккого телефона это приложение начните пробовать с раскладки от Nokia, так как она встречаеться чаще всего. Настройки TouchScreen - в этой группе опций указываеться какие кнопки будут эмулироваться на экране телефона. А с опциями Обрабатывать повтороное нажати е отбрабатывать отпускание надо эксперементировать - с какой их комбинацией данное приложение будет коректней обрабатывать действия на экране телефона. Заменяемые клавиши - сдесь можно переназначить заменяемые кнопки. Например мождно поменять местами софт кнопки.

MANIFEST.MF - Редактор информации о приложении На этой вкладке таблица с параметрами приложения - ищем нужный парметр, меняем значение и нажимаем сохранить. Например параметр MIDlet-Name - означает название приложения.

Опции - Редактор информации о приложении Пробовать автоматически определять раскладку клавиатуры - Программа при открытиии может попробоватьсама определить раскладку, но вероятность автоматического определения мала.

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

Помогите - Как редактировать файлы .Class? | Bukkit по-русски

На данный момент я знаю о InClassTranslator что в принципе не поможет проблеме. Он просто удаляет содержимое переменной,а не вывод её самой.

Таким образом есть программка, которая позволяет просматривать содержимое самих классов т.е. исходник код ява-скрипта: jd-gui .Полезная штука. С помощью её нахожу код, который нужно отредактировать или удалить, но становится вопрос: Как это сделать? Можно ли Eclipc-ом, и как это сделать что бы потом скомпилировать обратно в .class без ошибок?

Еще есть такая штука как MCP которая распакует за вас весь клиент майна и у вас будет возможность редактировать файлы формата .java с чем Eclipc или любой другой Ide редактор справится без каких либо проблем. Но не так то все просто. Сам по себе MCP не всегда может правильно распаковать и запаковать клиент, т.к. есть множество обстоятельств :

- Если клиент с модами;
- Если вы уже что-то правили левыми путями;
- Если IDE редактору что-то не понравится, то он просто напросто вас пошлет. Возможно это моя недоработка за счет малоопытности в dev-java , но все же.

В целом нужна помощь старожил в этом плане.

 

inClassTranslator программа для изменения class файлов

Если нужно заменить какие-то надписи в *.class-файлах игры, он может помочь. Например, для перевода модов и плагинов, для замены ссылок на пути скинов, различных стандартных надписей в игре (а-ля Copyright MojangAB) и для многого другого. Интерфейс программы довольно простой, слева список строк открытого класса, справа сверху текст выбранной строки, а внизу мы пишем свой текст. После изменения нужной надписи, надо кликнуть по ней слева ещё раз. После этого сохраняем и заменяем старый класс изменённым.

Как растаращить class-файл / Хабр

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

Можно поискать какие-то короткие конструкции языка, которые компилируются в длинные цепочки байткода, но линейный прирост меня не устраивал. Я сразу подумал про компиляцию finally-блоков: про неё уже писали на Хабре. Если вкратце, то для каждого finally-блока при непустом try-блоке создаётся минимум два варианта в байткоде: для случая нормального завершения try-блока и для случая завершения с исключением. В последнем случае исключение сохраняется в новую локальную переменную, выполняется код finally, затем исключение достаётся из локальной переменной и перебрасывается. А что если внутри finally снова разместить try-finally и так далее? Результат превзошёл все ожидания.

Я компилировал с помощью Oracle javac 1.7.0.60 и 1.8.0.25, результаты практически не отличались. Путь для исключения формируется даже в том случае, если в блоке try совсем ничего предосудительного. Например, присваивание целочисленной константы в локальную переменную — это две инструкции iconst и istore, ни про одну из них в спецификации не сказано, что они могут сгенерировать исключение. Так и будем писать:

class A {{ int a; try {a=0;} finally { try {a=0;} finally { try {a=0;} finally { try {a=0;} finally { try {a=0;} finally { try {a=0;} finally { try {a=0;} finally { try {a=0;} finally { try {a=0;} finally { try {a=0;} finally { try {a=0;} finally { try {a=0;} finally { a=0; }}}}}}}}}}}} }}

Добавление нового нетривиального кода в самый внутренний finally вызывает ошибку компиляции code too large, поэтому ограничимся таким. Если кто-то подзабыл, это у нас блок инициализации, который подклеивается к каждому конструктору. Для нашей задачи метод объявлять смысла нет.

Такой исходник занимает 336 байт, а получившийся class-файл растаращило до 6 571 429 байт, то есть в 19 557 раз (назовём это коэффициентом растаращивания). Даже при отключении всей отладочной информации с помощью -g:none class-файл весит 6 522 221 байт, что ненамного меньше. Посмотрим, что внутри с помощью утилиты javap.

Пул констант

Пул констант получился небольшой: всего 16 записей. По сути всё самое необходимое: имена атрибутов типа Code, имя класса, Java-файла, ссылка на конструктор родительского класса Object и т. д. При отключении отладочной информации исчезают три записи: имена атрибутов LineNumberTable, SourceFile и значение A.java для атрибута SourceFile.
Код

Код конструктора по умолчанию составил 64507 байт, почти упираясь в максимально допустимый предел. Начинается он с нормального выполнения:
Код
 0: aload_0 1: invokespecial #1 // Method java/lang/Object."<init>":()V 4: iconst_0 5: istore_1 6: iconst_0 7: istore_1 8: iconst_0 9: istore_1 10: iconst_0 11: istore_1 12: iconst_0 13: istore_1 14: iconst_0 15: istore_1 16: iconst_0 17: istore_1 18: iconst_0 19: istore_1 20: iconst_0 21: istore_1 22: iconst_0 23: istore_1 24: iconst_0 25: istore_1 26: iconst_0 27: istore_1 28: iconst_0 29: istore_1 30: goto 38 

То есть вызывается конструктор родительского класса, а затем 13 раз записывается единица в первую локальную переменную. После этого начинается длинная цепочка goto, которая обходит мимо всех остальных копий finally: 30->38->58->104->198->388->770->1536->3074->7168->15358->31740->64506, а по адресу 64506 мы находим долгожданную инструкцию return.

В промежутках между этими goto всевозможные комбинации нормальных и исключительных завершений каждого блока try. Неожиданным оказалось то, что для каждого finally, обрабатывающего исключение, для хранения исключения создаётся новая локальная переменная, даже если блоки заведомо взаимоисключающие. Из-за этого коду требуется 4097 локальных переменных. Небольшая статистика по инструкциям:

  • iconst_1 — 8191 раз
  • istore_1 — 8191 раз
  • goto — 4095 раз
  • athrow — 4095 раз
  • astore_2/aload_2 — 1 раз
  • astore_3/aload_3 — 1 раз
  • astore/aload — 252 раза (локальные переменные с номерами от 4 до 255)
  • astore_w/aload_w — 3841 раз (локальные переменные с номерами больше 255)

Плюс один aload_0, один invokespecial и один return — итого 32765 инструкций. Желающие могут нарисовать граф потока управления и повесить на стенку.
Таблица исключений

Таблица исключений содержит записи вида (start_pc, end_pc, handler_pc, catch_type) и говорит виртуальной машине «если при выполнении инструкций от адреса start_pc до адреса end_pc произошло исключение типа catch_type, то передай управление на адрес handler_pc». В данном случае catch_type везде равен any, то есть исключения любого типа. Записей в таблице 8188 и занимает она примерно столько же, сколько и код — около 64 килобайт. Начало выглядит так:
 from to target type 26 28 33 any 24 26 41 any 42 44 49 any 49 51 49 any 22 24 61 any 
Таблица номеров строк

Таблица номеров строк — это отладочная информация, сопоставляющая адресам инструкций байткода номера строк в исходнике. В ней 12288 записей и чаще всего попадаются ссылки на строчку с самым внутренним finally. Занимает она около 48 килобайт.
StackMapTable

Куда же ушло всё остальное место? Его заняла таблица StackMapTable, которая необходима для верификации class-файла. Если совсем грубо, для каждой точки ветвления в коде эта таблица содержит типы элементов в стеке и типы локальных переменных в данной точке. Так как локальных переменных у нас очень много и точек ветвления тоже, размер этой таблицы растёт квадратично от размера кода. Если бы локальные переменные для исключений в непересекающихся ветках переиспользовались, их бы потребовалось всего 13 и таблица StackMapTable была бы куда скромнее по размерам.
Таращим дальше

Можно ли растаращить class-файл ещё сильнее? Конечно, можно раскопировать метод, содержащий вложенные try-finally. Но компилятор вполне может сделать это за нас. Вспомните, что блок инициализации приклеивается к каждому конструктору автоматически. Достаточно добавить в код много пустых конструкторов с разными сигнатурами. Здесь будьте осторожны, а то у компилятора кончится память. Ну вот так можно скромненько написать, упаковав код в одну строчку:
class A{{int a;try{a=0;}finally{try{a=0;}finally{try{a=0;}finally{try{a=0;}finally{try{a=0;}finally{try{a=0;}finally{try{a=0;}finally{try{a=0;}finally{try{a=0;}finally{try{a=0;}finally{try{a=0;}finally{try{a=0;}finally{a=0;}}}}}}}}}}}}}A(){}A(int a){}A(char a){}A(double a){}A(float a){}A(long a){}A(short a){}A(boolean a){}A(String a){}A(Integer a){}A(Float a){}A(Short a){}A(Long a){}A(Double a){}A(Boolean a){}A(Character a){}}

Здесь у меня 16 конструкторов, исходник занимает 430 байт. После компиляции имеем 104 450 071 байт, коэффициент растаращивания составил 242 907. И это не предел!

Редактирование class файлов. Файл с расширением.class

Компилированный файл.JAVA, созданный компилятором Java. Содержит байтовый код являющийся бинарным программным кодом, выполняемым при запуске Java Virtual Machine (JVM). Обычно встраивается в файлы.JAR, которые входят в состав среды $CLASSPATH, подходящей для исполнения.

Файлы CLASS можно компилировать из файлов JAVA при помощи команды javac, входящей в состав пакета инсталляции JVM. Многие интегрированные среды разработки Java, такие как Eclipse, могут компилировать файлы CLASS на ходу, пока разработчики пишут программный код.

Поскольку существует множество версий JVM (например, 1.4, 1.5 и 1.6), некоторые файлы CLASS могут быть несовместимы с определенными версиями JVM. Java Runtime Environment (JRE) может выполнять файлы CLASS, но не может компилировать их, поскольку не включает в себя бинарный javac.

Примечание: компания Oracle приобрела Sun Microsystems - изначального разработчика Java. JRE и JVM часто используются как синонимы для ссылок на платформу, запускающую приложения Java.

Расширение файла.class представляет собой файл класса Java. Данный файл может быть открыт с помощью следующих программ: Oracle Java Runtime Environment, Eclipse IDE for Java Developers с подключаемым модулем JD-Eclipse, dirtyJOE, JD-GUI.

Файл формата CLASS открывается специальными программами. Чтобы открыть данный формат, скачайте одну из предложенных программ.

Чем открыть файл в формате CLASS

Расширение CLASS может быть представлено двумя основными исполнениями:

  • Формат CLASS (разработчик Oracle) относится к категории файлов, скомпилированных при помощи Java. Активируется двоичный байт-код расширения CLASS при инициализации Java Virtual Machine (JVM). Зачастую данный формат поддерживает совместную работу с файлами.

Выполняя команду javac, входящую в состав инсталляционного пакета JVM, можно получить расширение CLASS из Java-файлов. Некоторые интегрированные разновидности Java, например, Eclipse, поддерживают параллельную генерацию формата CLASS в процессе написания программного кода.

Ввиду того, что существует несколько модификаций JVM (включая версии 1.4-1.6), некоторые исполнения CLASS файлов могут не поддерживаться на определенных версиях JVM.

Отсутствие бинарного javac в комплексе Java Runtime Environment (JRE) не позволяет компилировать файлы CLASS, но не исключает возможности их фактического выполнения. JRE и JVM зачастую применяются как идентичные понятия, когда речь идет о платформе, запускающей Java приложения.

  • Расширение CLASS представляет собой исходник к (правообладателем лицензии является GNU Public). Gambas - полнофункциональный, объектно-ориентированный язык программирования, выполненный на базе интерпретатора BASIC.

Методы и средства программирования, а также архитектура языка во многом схожа с представлением Java.

В основе Gambas следующие программные модули:

  • компилятор;
  • транслятор;
  • архиватор;
  • скрипты;
  • рабочая программная область;
  • дополнительные компоненты и конструктивные элементы.

Программы для открытия CLASS файлов

Если CLASS расширение представляет собой категорию файлов, скомпилированную при помощи Java, для генерации и воспроизведения его на базе ОС Windows можно воспользоваться самыми разнообразными программными комплексами:

В данном представлении CLASS адаптирован и для платформы ОС Mac:

Расширение может быть открыто и на базе ОС Linux с применением все тех же программных плагинов

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

Можно поискать какие-то короткие конструкции языка, которые компилируются в длинные цепочки байткода, но линейный прирост меня не устраивал. Я сразу подумал про компиляцию finally-блоков: про неё уже писали на Хабре . Если вкратце, то для каждого finally-блока при непустом try-блоке создаётся минимум два варианта в байткоде: для случая нормального завершения try-блока и для случая завершения с исключением. В последнем случае исключение сохраняется в новую локальную переменную, выполняется код finally, затем исключение достаётся из локальной переменной и перебрасывается. А что если внутри finally снова разместить try-finally и так далее? Результат превзошёл все ожидания.

Я компилировал с помощью Oracle javac 1.7.0.60 и 1.8.0.25, результаты практически не отличались. Путь для исключения формируется даже в том случае, если в блоке try совсем ничего предосудительного. Например, присваивание целочисленной константы в локальную переменную - это две инструкции iconst и istore , ни про одну из них в спецификации не сказано, что они могут сгенерировать исключение. Так и будем писать:
class A {{ int a; try {a=0;} finally { try {a=0;} finally { try {a=0;} finally { try {a=0;} finally { try {a=0;} finally { try {a=0;} finally { try {a=0;} finally { try {a=0;} finally { try {a=0;} finally { try {a=0;} finally { try {a=0;} finally { try {a=0;} finally { a=0; }}}}}}}}}}}} }}
Добавление нового нетривиального кода в самый внутренний finally вызывает ошибку компиляции code too large, поэтому ограничимся таким. Если кто-то подзабыл, это у нас блок инициализации , который подклеивается к каждому конструктору. Для нашей задачи метод объявлять смысла нет.

Такой исходник занимает 336 байт, а получившийся class-файл растаращило до 6 571 429 байт, то есть в 19 557 раз (назовём это коэффициентом растаращивания). Даже при отключении всей отладочной информации с помощью -g:none class-файл весит 6 522 221 байт, что ненамного меньше. Посмотрим, что внутри с помощью утилиты javap .

Пул констант
Пул констант получился небольшой: всего 16 записей. По сути всё самое необходимое: имена атрибутов типа Code, имя класса, Java-файла, ссылка на конструктор родительского класса Object и т. д. При отключении отладочной информации исчезают три записи: имена атрибутов LineNumberTable, SourceFile и значение A.java для атрибута SourceFile.
Код
Код конструктора по умолчанию составил 64507 байт, почти упираясь в максимально допустимый предел. Начинается он с нормального выполнения:

Код

0: aload_0 1: invokespecial #1 // Method java/lang/Object."":()V 4: iconst_0 5: istore_1 6: iconst_0 7: istore_1 8: iconst_0 9: istore_1 10: iconst_0 11: istore_1 12: iconst_0 13: istore_1 14: iconst_0 15: istore_1 16: iconst_0 17: istore_1 18: iconst_0 19: istore_1 20: iconst_0 21: istore_1 22: iconst_0 23: istore_1 24: iconst_0 25: istore_1 26: iconst_0 27: istore_1 28: iconst_0 29: istore_1 30: goto 38


То есть вызывается конструктор родительского класса, а затем 13 раз записывается единица в первую локальную переменную. После этого начинается длинная цепочка goto, которая обходит мимо всех остальных копий finally: 30->38->58->104->198->388->770->1536->3074->7168->15358->31740->64506, а по адресу 64506 мы находим долгожданную инструкцию return.

В промежутках между этими goto всевозможные комбинации нормальных и исключительных завершений каждого блока try. Неожиданным оказалось то, что для каждого finally, обрабатывающего исключение, для хранения исключения создаётся новая локальная переменная, даже если блоки заведомо взаимоисключающие. Из-за этого коду требуется 4097 локальных переменных. Небольшая статистика по инструкциям:

  • iconst_1 - 8191 раз
  • istore_1 - 8191 раз
  • goto - 4095 раз
  • athrow - 4095 раз
  • astore_2/aload_2 - 1 раз
  • astore_3/aload_3 - 1 раз
  • astore/aload - 252 раза (локальные переменные с номерами от 4 до 255)
  • astore_w/aload_w - 3841 раз (локальные переменные с номерами больше 255)
Плюс один aload_0, один invokespecial и один return - итого 32765 инструкций. Желающие могут нарисовать граф потока управления и повесить на стенку.
Таблица исключений
Таблица исключений содержит записи вида (start_pc, end_pc, handler_pc, catch_type) и говорит виртуальной машине «если при выполнении инструкций от адреса start_pc до адреса end_pc произошло исключение типа catch_type, то передай управление на адрес handler_pc». В данном случае catch_type везде равен any, то есть исключения любого типа. Записей в таблице 8188 и занимает она примерно столько же, сколько и код - около 64 килобайт. Начало выглядит так:
from to target type 26 28 33 any 24 26 41 any 42 44 49 any 49 51 49 any 22 24 61 any
Таблица номеров строк
Таблица номеров строк - это отладочная информация, сопоставляющая адресам инструкц

Как мне отредактировать фактический код файла java .class?

Переполнение стека
  1. Около
  2. Товары
  3. Для команд
  1. Переполнение стека Общественные вопросы и ответы
  2. Переполнение стека для команд Где разработчики и технологи делятся частными знаниями с коллегами
  3. Вакансии Программирование и связанные с ним технические возможности карьерного роста
  4. Талант Нанимайте технических специалистов и создавайте свой бренд работодателя
  5. Реклама Обратитесь к разработчикам и технологам со всего мира
  6. О компании

Загрузка…

.

java - Самый простой способ редактировать / изменять скомпилированный файл класса

Переполнение стека
  1. Около
  2. Товары
  3. Для команд
  1. Переполнение стека Общественные вопросы и ответы
  2. Переполнение стека для команд Где разработчики и технологи делятся частными знаниями с коллегами
  3. Вакансии Программирование и связанные с ним технические возможности карьерного роста
  4. Талант Нанимайте технических специалистов и создавайте свой бренд работодателя
  5. Реклама Обратитесь к разработчикам и технологам со всего мира
  6. О компании
.

java - Как отредактировать файл .jar?

Переполнение стека
  1. Около
  2. Товары
  3. Для команд
  1. Переполнение стека Общественные вопросы и ответы
  2. Переполнение стека для команд Где разработчики и технологи делятся частными знаниями с коллегами
  3. Вакансии Программирование и связанные с ним технические возможности карьерного роста
.

java - Как отредактировать файл с расширением .class?

Переполнение стека
  1. Около
  2. Товары
  3. Для команд
  1. Переполнение стека Общественные вопросы и ответы
  2. Переполнение стека для команд Где разработчики и технологи делятся частными знаниями с коллегами
  3. Вакансии Программирование и сопутствующие товары
.

ClassEditor - редактор файлов классов Java

Откройте двоичный файл класса Java для просмотра или редактирования строк, атрибутов, методов и генерировать удобочитаемые отчеты, аналогичные утилите javap. Встроенный верификатор проверяет изменения перед сохранением файла. Простой в использовании графический интерфейс Java Swing.

Это инструмент для открытия двоичных файлов классов Java, просмотра их внутренних структуру, при необходимости измените ее части и сохраните файл класса. Он также создает удобочитаемые отчеты, аналогичные утилите javap.Простой в использовании графический интерфейс Java Swing. Пользовательский интерфейс пытается отобразить как можно больше как можно больше деталей и пытается представить структуру как можно ближе к реальной Файловая структура класса Java. В то же время простота использования и классный файл также подчеркивается последовательность при внесении изменений. Например, когда удаляется, соответствующая запись постоянного пула будет также удаляется, если на него больше нет ссылки. Встроенный верификатор проверяет изменения перед сохранением файла. Этот инструмент использовали люди изучение внутренностей файла классов Java.Этот инструмент также использовался для быстрого модификации в файлах классов, когда исходный код недоступен.

Некоторые общие требования уровня, на которых основан этот инструмент:

  • Интуитивно понятный графический интерфейс пользователя: Интерфейс пользователя должен быть чистый и интуитивно понятный. Экраны не должны быть переполнены. Компоненты, такие как вкладка по возможности следует использовать панели, чтобы уменьшить загромождение экрана.
  • Четкое разделение для новичков и опытных пользователей: Особенности должны быть устроены так, чтобы начинающий пользователь мог добраться до нужной опции легко, в то время как все функции доступны для опытного пользователя глубже экранная иерархия.
  • Каскадные изменения: Базовый механизм должен уметь обнаруживать каскадирование изменения, если таковые имеются, и подтвердите все изменения перед продолжением.
  • Проверка согласованности: Должна быть предоставлена ​​проверка согласованности. Предоставление эта проверка на всех этапах может оказаться невозможной. Для обработки таких случаев пользователь должен быть предоставлен контроль для выполнения этой проверки при необходимости.
  • Возможность выключить проверку согласованности: Зачем кто-нибудь этого хочет? Ну, чтобы протестировать саму виртуальную машину Java, чтобы увидеть, как хорошо это выдерживает ошибки в файле класса.Компилятор Java никогда не создать недопустимый файл класса. Вероятно, это единственный способ сделать это.
  • Создание новых классов: Должна быть возможность создавать классы с нуля с помощью этого инструмента. Это послужит полезным инструментом для обучения инструкции виртуальной машины Java.
  • Возможность проверки специфических атрибутов компилятора: Некоторые компиляторы добавить атрибуты, относящиеся к их продукту, чтобы облегчить отладку и другие особенности продукта.Например, компилятор может встроить запись в файл браузера исходного файла или может быть атрибутом номера строки в классе описания методов. Эта утилита должна уметь обнаруживать, отображать и по возможности манипулируйте такими функциями.
.

Общие сведения о пакетах и ​​файлах классов

Форматирование по умолчанию в документах LaTeX определяется классом , используемым этим документом. Этот вид по умолчанию можно изменить, и можно добавить дополнительные функции с помощью пакета . Имена файлов классов имеют расширение .cls , имена файлов пакетов имеют расширение .sty .

Разница между классами и пакетами

Иногда бывает трудно принять решение, когда нужно написать пакет или класс.Основное правило состоит в том, что если ваш файл содержит команды, управляющие внешним видом логической структуры документа особого типа, то это класс. В противном случае, если ваш файл добавляет функции, которые не зависят от типа документа, то есть могут использоваться в книгах, отчетах, статьях и т. Д .; тогда это пакет.

Например, если компании нужны брендированные отчеты с использованием специального шрифта и с логотипом компании в нижнем колонтитуле; вам нужен новый класс.

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

Дополнительная литература

Для получения дополнительной информации см.

.

Смотрите также