Есть ли быстрый способ удалить файл из Jar/war без необходимости извлекать банку и воссоздать ее?

Поэтому мне нужно удалить файл из файла jar/war. Я надеялся, что есть что-то вроде "jar -d myjar.jar file_I_donot_need.txt"

Но сейчас единственный способ увидеть это из моей командной строки Linux (без использования WinRAR/Winzip или эквивалента Linux) - это

  • Сделайте "jar -xvf" и извлеките полный файл Jar
  • Удалить файл Мне не нужно
  • Верните файл jar с помощью "jar -cvf"

Скажите, пожалуйста, более короткий путь?

Ответ 1

zip -d file.jar unwanted_file.txt

jar - это всего лишь zip файл. Определенно намного быстрее, чем раскалывание/повторное сжатие.

Ответ 2

В Java вы можете скопировать все записи в банку, кроме той, которую вы хотите удалить. т.е. вам нужно сделать копию, но не нужно создавать отдельные файлы.

Вы можете сделать это с помощью

  • создание новой банки.
  • итерация, хотя у вас есть Jar
  • скопируйте запись из одной банки в другую, пропустив любые файлы, которые вы хотите.
  • закрыть и заменить оригинальную банку, если хотите.

Ответ 3

Если вы хотите удалить файл, чтобы выровнять подписанную банку, вы можете просто сделать файл .RSA нулевым. Это можно сделать только с помощью jar u. См. fooobar.com/info/68173/.... (Работал для меня, хотя я признаю, что он взломал.)