Изменение кода класса из файла JAR

Как я могу прочитать (загрузить) класс java из файла jar, добавить некоторый код в класс и затем вернуть обратно в jar? Мне нужно написать скрипт (код Java), который делает все это. Я думаю о следующих шагах: 1. Прочитайте jar и получите запись с именем класса, используя методы из пакета java.util.jar 2. Загрузите этот класс, получите массив из класса, измените его 3. Возможно, скомпилируйте код для применения изменений 4. Поместите обновленный класс в файл jar

Я не знаю, как сделать 2-й и 3-й шаги в Java.

Я думал написать новый класс Java, который расширяет этот класс и меняет массив, но этот массив объявлен как public static final, поэтому я не могу его изменить. Или я не прав, и есть способ изменить массив путем расширения класса?

3 ответа

Jar - это просто ZIP-файл, поэтому вы можете извлечь его с помощью любого менеджера архивов, например, 7-ZIP. Он будет содержать файлы классов, которые являются скомпилированными файлами Java. Вам нужен Java-декомпилятор для чтения и изменения байт-кода.

Извлечь -> Декомпилировать -> Добавить код -> Создать Jar

Лучшим решением было бы использовать JAR в вашем коде и расширить класс (если класс позволяет вам это делать).

Если вы не можете, класс JAR на самом деле является ZIP-архивом. Вы можете переименовать x.jar в x.zip и извлечь содержимое:

Здесь у вас есть больше информации (особенно ответ OscarRyz): Как вы перекомпилируете файл jar?

Другие вопросы по тегам