Как обновить один файл в банке без переупаковки всей банки?
У меня есть .jar файл с именем myfile.jar. Внутри этого файла jar находится папка с изображениями. Внутри этой папки, называемой изображениями, у меня есть изображение hi.png. Я хочу обновить это изображение с новой версией этого изображения, которое также называется hi.png. Я не хочу извлекать все файлы из одного файла jar, а затем переупаковывать их, просто хочу обновить изображение. Итак, я иду в командной строке, как обычно, введите несколько строк кода, а затем я сделаю эту команду:
jar uf myfile.jar -C images hi.png
То, что я надеялся сделать с этой командой, было заменить старый hi.png новым hi.png. Но, это дает мне эту ошибку:
images\hi.png : no such file or directory
Что мне делать, чтобы исправить это?
Дополнительная информация: я не могу использовать что-то вроде WinRAR, я должен сделать это с помощью командной строки.
Ответы
Ответ 1
-C
меняет локальный каталог и ищет там hi.png
. Он не контролирует, где вы пытаетесь ввести его в файл JAR.
Я бы попробовал создать новый каталог под названием images
, переместив в него локальный hi.png
, создав images
дочерний каталог вашего текущего рабочего каталога, а затем запустите это:
jar uf myfile.jar images\hi.png
Ответ 2
Самый простой способ - использовать программное обеспечение 7-zip. Для
Ответ 3
вы можете использовать jar -uf sample.jar [path in jar file]target-file
Ответ 4
Если вы хотите расширить Spring Boot App (например, для целей тестирования e2e), это работает для меня:
часть Dockerfile:
COPY ./libs/*.jar /BOOT-INF/lib/
RUN jar u0f /app.jar /BOOT-INF/lib/*.jar
Ответ 5
Jar файлы похожи на ZIP файлы. Когда вы редактируете zip файл, vim распаковывает его и позволяет редактировать файлы внутри zip файла. Просто перейдите по файлу и нажмите клавишу ввода, и вы сможете редактировать файлы внутри архива.
(Предполагая, что у вас есть unzip
, например, yum install -y unzip
в CentOS)
vim my.jar