Esiste un modo rapido per eliminare un file da un Jar / war senza dover estrarre il jar e ricrearlo?


105

Quindi ho bisogno di rimuovere un file da un file jar / war. Speravo ci fosse qualcosa come "jar -d myjar.jar file_I_donot_need.txt"

Ma in questo momento l'unico modo che posso vedere di farlo dalla mia riga di comando Linux (senza usare WinRAR / Winzip o l'equivalente Linux) è quello di

  • Fai "jar -xvf" ed estrai il
    file Jar completo
  • Rimuovi i file che non mi servono
  • Riapre il file jar utilizzando "jar -cvf"

Per favore dimmi che esiste un modo più breve?


3
Poiché un "jar" è solo un file zip, sospetto che avrai più fortuna su superuser.com .
Kirk Woll

Puoi anche provare a scrivere uno script di shell per completare l'intero processo. Qualcosa come./myscript.sh -d <list of files>
Favonius

Risposte:


202
zip -d file.jar unwanted_file.txt

jar è solo un file zip dopo tutto. Decisamente molto più veloce della decompressione / ricompressione.


3
Più spesso ho installato p7zip al posto di zipe in questo caso è importante specificare il formato del file:7z d -tzip file.jar dir/unwanted_file.txt
lapo

@martona Ricevo il seguente errore: errore zip: struttura del file Zip
Goaler444

@ Goaler444 Ho avuto lo stesso errore, ma usando 7z come suggerito da lapo ha funzionato per me.
yby

Come eliminare un file da un vaso figlio o un vaso nipote?
Tom

5
Se desideri eliminare una cartella nel jar, assicurati che ci sia una barra finale sulla cartella indesiderata:zip -d file.jar unwanted_folder/
Martin Woolstenhulme

1

In Java puoi copiare tutte le voci di un jar tranne quella che desideri eliminare. cioè devi fare una copia ma non è necessario creare i singoli file.

Puoi farlo da

  • creando un nuovo barattolo.
  • iterando anche se il vaso che hai
  • copia la voce da un jar all'altro, saltando tutti i file che desideri.
  • chiudi e sostituisci il barattolo originale se lo desideri.

0

Nel caso in cui desideri eliminare il file per annullare la firma del jar firmato, probabilmente puoi semplicemente rendere il file .RSA di dimensioni zero. Questo può essere ottenuto con appena jar u. Vedi https://stackoverflow.com/a/24678645/653539 . (Ha funzionato per me, anche se ammetto che sia un hack.)

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.