Как обновить один файл в банке без переупаковки всей банки?

У меня есть .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. Для

  • Редактирование файла:

    • Откройте файл jar 7-zip | открытый архив
    • перейти к файлу, например. /Meta -Inf/xyz.conf
    • щелкните правой кнопкой мыши и выберите опцию "открыть внутри"
    • отредактируйте файл и сохраните файл
    • закройте консоль 7-zip и сделайте это.
  • Для добавления/замены/удаления файла.

    • Следуйте первым двум шагам, пока не достигнете нужной папки.
    • Удаление: удаление файла
    • Добавление. Перетащите файл в консоль 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