Подтвердить что ты не робот

Обновление файла .class в банке

Я хочу обновить файл .class в jar с новым. Каков самый простой способ сделать это, особенно в Eclipse IDE?

4b9b3361

Ответ 1

В этом руководстве подробно описано, как обновить файл JAR.

jar -uf jar-file <optional_folder_structure>/input-file(s)     

где "у" означает обновление.

Ответ 2

Вы хотите сделать это автоматически или вручную? Если вручную, JAR файл - это просто ZIP файл, поэтому вы можете открыть его с помощью любого ZIP-ридера. (Возможно, вам придется сначала изменить расширение.) Если вы хотите автоматически обновить файл JAR через Eclipse, вы можете посмотреть в Ant в Eclipse и посмотрите задачу zip.

Ответ 3

Просто перетащите свой новый файл класса в JAR, используя 7-Zip или Winzip. Вы даже можете изменить JAR файл, который включен в файл WAR, используя значок родительской папки, и нажмите "ОК", когда 7zip обнаруживает, что внутренний файл был изменен.

Ответ 4

Jar - это архив, вы можете самостоятельно заменить файл в своем любимом файловом менеджере (например, Total Commander).

Ответ 5

  • Используйте jar -xvf для извлечения файлов в каталог.
  • Внесите изменения и замените классы.
  • Используйте jar -cvf для создания нового файла jar.

Ответ 6

Файл JAR - это просто маскировка .zip. ZIP-папка содержит файлы .class.

Если вы используете macOS:

  • Переименуйте файл, чтобы иметь расширение .zip. например myJar.jar → myJar.zip.
  • Декомпрессируйте ".zip" (дважды щелкните по нему). Появится новая папка с именем myJar.
  • Найдите и замените файл .class на новый .class файл.
  • Выберите все содержимое папки "myJar" и выберите "Сжать x элементы". НЕ ЗАПОЛНЯЙТЕ ПАПКУ, ТОЛЬКО ЕЕ СОДЕРЖАНИЕ

Разное - компиляция одного файла .class со ссылкой на исходную банку на macOS

  • Создайте файл myClass.java, содержащий ваш код.
  • Откройте терминал из Spotlight.
  • javac -classpath originalJar.jar myClass.java Это создаст ваш скомпилированный класс myClass.class.

Далее следуйте приведенным выше инструкциям. Вы также можете использовать Eclipse для его компиляции, просто ссылаясь на исходную банку, щелкнув правой кнопкой мыши по проекту "Путь сборки" → "Добавить внешние архивы". Отсюда вы можете скомпилировать его как банку и использовать технику zip выше, чтобы извлечь класс из банки.

Ответ 7

Свойства редактирования/файл my_app.properties внутри jar:

"zip -u /var/opt/my-jar-with-dependencies.jar properties/my_app.properties". В основном "zip -u <source> <dest>", где dest относится к папке с извлечением jar.

Ответ 8

1) вы можете извлечь файл в папку с именем

jarname.jar

а затем замените файл в папке, удобно, если вы много обновляете класс при отладке

2) вы можете извлечь банку, замените файл, затем снова закройте его.

3) Откройте банку с помощью 7 zip и перетащите свой новый класс, чтобы скопировать поверх старого

Ответ 9

Вы можете найти исходный код любого файла .jar в Интернете, импортировать тот же проект в свою среду IDE с базовыми настройками. Внесите необходимые изменения в файл .java и скомпилируйте его для файлов .class.

После завершения компиляции Вам нужно извлечь файл jar, замените старый файл .class новым.

И используйте команду ниже для реконструкции .jar файла

Jar cf test.jar *

Примечание: я столько раз делал эти изменения в нашем проекте, надеюсь, вы найдете его полезным.

Ответ 10

Шаги высокого уровня:

Setup the environment
Use JD-GUI to peek into the JAR file
Unpack the JAR file
Modify the .class file with a Java Bytecode Editor
Update the modified classes into existing JAR file
Verify it with JD-GUI

Ссылка ниже для подробных шагов и методов, чтобы сделать это,

https://www.talksinfo.com/how-to-edit-class-file-from-a-jar/

Ответ 11

Я попробовал метод из @brina-agnew с jar uf <jarfile> <classfiles>, и он не сработал так, как ожидалось. Файлы были добавлены в корневой каталог фляги, фактически не заменяя классы (которые были глубоко в дереве каталогов). Лучший метод - @silent - используйте менеджер архивов и заменяйте файлы классов, где бы они ни находились. Не забудьте получить все производные тоже.

enter image description here

Ответ 12

Альтернативой является не замена файла .class в файле jar. Вместо этого поместите его в новый файл jar и убедитесь, что он появился раньше в вашем пути к классам, чем исходный файл jar.

Не уверен, что я рекомендовал бы это для программного обеспечения для производства, но для разработки это быстро и просто.