Apakah ada cara cepat untuk menghapus file dari Jar / war tanpa harus mengekstrak jar dan membuatnya kembali?


105

Jadi saya perlu menghapus file dari file jar / war. Saya berharap ada sesuatu seperti "jar -d myjar.jar file_I_donot_need.txt"

Tetapi sekarang satu-satunya cara yang dapat saya lihat untuk melakukan ini dari baris perintah Linux saya (tanpa menggunakan WinRAR / Winzip atau setara linux) adalah dengan

  • Lakukan "jar -xvf" dan ekstrak
    file Jar lengkap
  • Hapus file yang tidak saya butuhkan
  • Ulangi file jar menggunakan "jar -cvf"

Tolong beritahu saya ada cara yang lebih pendek?


3
Karena "jar" hanyalah file zip, saya rasa Anda akan lebih beruntung di superuser.com .
Kirk Woll

Anda juga dapat mencoba menulis skrip shell untuk menyelesaikan seluruh proses. Sesuatu seperti./myscript.sh -d <list of files>
Favonius

Jawaban:


202
zip -d file.jar unwanted_file.txt

jar hanyalah file zip. Jelas jauh lebih cepat daripada membuka / mengompresi ulang.


3
Saya lebih sering menginstal p7zip daripada zipdan dalam hal ini penting untuk menentukan format file:7z d -tzip file.jar dir/unwanted_file.txt
lapo

@martona Saya mendapatkan kesalahan berikut: kesalahan zip: Struktur file zip
Goaler444

@ Goaler444 Saya mengalami kesalahan yang sama, tetapi menggunakan 7z seperti yang disarankan lapo berhasil untuk saya.
yby

Bagaimana cara menghapus file dari jar anak atau jar grand child?
Tom

5
Jika Anda ingin menghapus folder di toples, pastikan ada garis miring di folder yang tidak diinginkan:zip -d file.jar unwanted_folder/
Martin Woolstenhulme

1

Di Java, Anda dapat menyalin semua entri jar kecuali yang ingin Anda hapus. yaitu Anda harus membuat salinan tetapi tidak perlu membuat file satu per satu.

Anda dapat melakukannya dengan

  • membuat toples baru.
  • iterasi meskipun Jar yang Anda miliki
  • salin entri dari satu toples ke yang lain, lewati file apa pun yang Anda inginkan.
  • tutup dan ganti stoples asli jika Anda mau.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.