Чи є швидкий спосіб видалити файл з Jar / war, не виймаючи банку і відтворити її?


105

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

Але зараз єдиний спосіб я бачу робити це з мого командного рядка Linux (без використання WinRAR / Winzip або еквівалента Linux) - це

  • Зробіть "jar -xvf" і витягніть
    повний файл Jar
  • Видаліть файли, які мені не потрібні
  • Оновити файл jar за допомогою "jar -cvf"

Скажіть, будь ласка, коротший шлях?


3
Оскільки "jar" - це лише поштовий файл, я підозрюю, що вам пощастить на superuser.com .
Кірк Уолл

Ви також можете спробувати написати сценарій оболонки, щоб завершити весь процес. Щось на кшталт./myscript.sh -d <list of files>
Фавоній

Відповіді:


202
zip -d file.jar unwanted_file.txt

jar - це лише zip-файл. Однозначно набагато швидше, ніж нестискання / повторне стискання.


3
У мене частіше замість цього встановлено p7zip, zipі в цьому випадку важливо вказати формат файлу:7z d -tzip file.jar dir/unwanted_file.txt
lapo

@martona Я отримую таку помилку: помилка zip: структура файлів Zip
Goaler444

@ Goaler444 У мене була така ж помилка, але використання 7z як запропоноване лапо працювало на мене.
yby

Як видалити файл з дочірньої банки або великої дочірньої баночки?
Том

5
Якщо ви хочете видалити папку в банці, переконайтеся, що на небажаній папці є передійна коса риса:zip -d file.jar unwanted_folder/
Martin Woolstenhulme

1

На Java ви можете скопіювати всі записи банку, крім тієї, яку потрібно видалити. тобто вам потрібно зробити копію, але не потрібно створювати окремі файли.

Це можна зробити за допомогою

  • створення нової банки.
  • ітерація, хоча Jar у вас є
  • скопіюйте запис з однієї банки в іншу, пропускаючи всі потрібні файли.
  • закрийте і замініть початкову банку, якщо хочете.

0

Якщо ви хочете видалити файл, щоб відписати підписану банку, ви, ймовірно, просто зробите .RSA файл нульового розміру. Це можна досягти просто jar u. Дивіться https://stackoverflow.com/a/24678645/653539 . (Працював для мене, хоча я визнаю, що це злом.)

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.