Ответ 1
В этом руководстве подробно описано, как обновить файл JAR.
jar -uf jar-file <optional_folder_structure>/input-file(s)
где "у" означает обновление.
Я хочу обновить файл .class в jar с новым. Каков самый простой способ сделать это, особенно в Eclipse IDE?
В этом руководстве подробно описано, как обновить файл JAR.
jar -uf jar-file <optional_folder_structure>/input-file(s)
где "у" означает обновление.
Вы хотите сделать это автоматически или вручную? Если вручную, JAR файл - это просто ZIP файл, поэтому вы можете открыть его с помощью любого ZIP-ридера. (Возможно, вам придется сначала изменить расширение.) Если вы хотите автоматически обновить файл JAR через Eclipse, вы можете посмотреть в Ant в Eclipse и посмотрите задачу zip.
Просто перетащите свой новый файл класса в JAR, используя 7-Zip или Winzip. Вы даже можете изменить JAR файл, который включен в файл WAR, используя значок родительской папки, и нажмите "ОК", когда 7zip обнаруживает, что внутренний файл был изменен.
Jar - это архив, вы можете самостоятельно заменить файл в своем любимом файловом менеджере (например, Total Commander).
jar -xvf
для извлечения файлов в каталог.jar -cvf
для создания нового файла jar.Файл JAR - это просто маскировка .zip. ZIP-папка содержит файлы .class
.
Если вы используете macOS:
.class
на новый .class файл.Разное - компиляция одного файла .class со ссылкой на исходную банку на macOS
javac -classpath originalJar.jar myClass.java
Это создаст ваш скомпилированный класс myClass.class.Далее следуйте приведенным выше инструкциям. Вы также можете использовать Eclipse для его компиляции, просто ссылаясь на исходную банку, щелкнув правой кнопкой мыши по проекту "Путь сборки" → "Добавить внешние архивы". Отсюда вы можете скомпилировать его как банку и использовать технику zip выше, чтобы извлечь класс из банки.
Свойства редактирования/файл my_app.properties внутри jar:
"zip -u /var/opt/my-jar-with-dependencies.jar properties/my_app.properties"
. В основном "zip -u <source> <dest>"
, где dest относится к папке с извлечением jar.
1) вы можете извлечь файл в папку с именем
jarname.jar
а затем замените файл в папке, удобно, если вы много обновляете класс при отладке
2) вы можете извлечь банку, замените файл, затем снова закройте его.
3) Откройте банку с помощью 7 zip и перетащите свой новый класс, чтобы скопировать поверх старого
Вы можете найти исходный код любого файла .jar в Интернете, импортировать тот же проект в свою среду IDE с базовыми настройками. Внесите необходимые изменения в файл .java и скомпилируйте его для файлов .class.
После завершения компиляции Вам нужно извлечь файл jar, замените старый файл .class новым.
И используйте команду ниже для реконструкции .jar файла
Jar cf test.jar *
Примечание: я столько раз делал эти изменения в нашем проекте, надеюсь, вы найдете его полезным.
Шаги высокого уровня:
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/
Я попробовал метод из @brina-agnew с jar uf <jarfile> <classfiles>
, и он не сработал так, как ожидалось. Файлы были добавлены в корневой каталог фляги, фактически не заменяя классы (которые были глубоко в дереве каталогов). Лучший метод - @silent - используйте менеджер архивов и заменяйте файлы классов, где бы они ни находились. Не забудьте получить все производные тоже.
Альтернативой является не замена файла .class в файле jar. Вместо этого поместите его в новый файл jar и убедитесь, что он появился раньше в вашем пути к классам, чем исходный файл jar.
Не уверен, что я рекомендовал бы это для программного обеспечения для производства, но для разработки это быстро и просто.