Есть ли быстрый способ удалить файл из Jar / war без необходимости извлекать jar и воссоздавать его? - PullRequest
94 голосов
/ 23 декабря 2010

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

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

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

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

Ответы [ 3 ]

187 голосов
/ 23 декабря 2010
zip -d file.jar unwanted_file.txt

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

1 голос
/ 23 декабря 2010

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

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

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

В случае, если вы хотите удалить файл, чтобы подписать jar без знака, вы можете просто сделать файл .RSA нулевым.Это может быть достигнуто только с jar u.См. https://stackoverflow.com/a/24678645/653539.(Работал для меня, хотя я признаю, что это взломать.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...