Поэтому мне нужно удалить файл из файла jar / war. Я надеялся, что там что-то вроде "jar -d myjar.jar file_I_donot_need.txt"
Но сейчас единственный способ сделать это из командной строки Linux (без использования WinRAR / Winzip или эквивалента Linux) - это
- Выполните "jar -xvf" и извлеките
полный файл Jar. - Удалите файлы, которые мне не нужны
- Повторите jar-файл с помощью "jar -cvf"
Подскажите пожалуйста, есть способ покороче?
./myscript.sh -d <list of files>
Ответы:
jar - это всего лишь zip-файл. Определенно намного быстрее, чем распаковка / повторное сжатие.
источник
zip
и в этом случае важно указать формат файла:7z d -tzip file.jar dir/unwanted_file.txt
zip -d file.jar unwanted_folder/
В Java вы можете скопировать все записи jar, кроме той, которую хотите удалить. т.е. вам нужно сделать копию, но не нужно создавать отдельные файлы.
Вы можете сделать это
источник
Если вы хотите удалить файл, чтобы не подписывать подписанный jar, вы, вероятно, можете просто сделать файл .RSA нулевым размером. Это можно сделать с помощью всего
jar u
. См. Https://stackoverflow.com/a/24678645/653539 . (Сработало для меня, хотя я признаю, что это взлом.)источник