¿Existe una forma rápida de eliminar un archivo de un jar / war sin tener que extraer el jar y volver a crearlo?


105

Entonces necesito eliminar un archivo de un archivo jar / war. Esperaba que hubiera algo como "jar -d myjar.jar file_I_donot_need.txt"

Pero en este momento, la única forma que puedo ver de hacer esto desde mi línea de comandos de Linux (sin usar WinRAR / Winzip o el equivalente de Linux) es

  • Haga "jar -xvf" y extraiga el
    archivo Jar completo
  • Eliminar los archivos que no necesito
  • Rejar el archivo jar usando "jar -cvf"

Por favor, dime que hay un camino más corto.


3
Dado que un "jar" es solo un archivo zip, sospecho que tendrás más suerte en superuser.com .
Kirk Woll

También puede intentar escribir un script de shell para envolver todo el proceso. Algo como./myscript.sh -d <list of files>
Favonius

Respuestas:


202
zip -d file.jar unwanted_file.txt

jar es solo un archivo zip después de todo. Definitivamente mucho más rápido que descomprimir / recomprimir.


3
Con más frecuencia tengo instalado p7zip en lugar de zipy, en este caso, es importante especificar el formato de archivo:7z d -tzip file.jar dir/unwanted_file.txt
lapo

@martona Recibo el siguiente error: error zip: estructura de archivo Zip
Goaler444

@ Goaler444 Tuve el mismo error, pero usar 7z como sugirió lapo funcionó para mí.
sobrevuelo

¿Cómo eliminar un archivo de un frasco secundario o un frasco nieto?
Tom

5
Si desea eliminar una carpeta en el frasco, asegúrese de que haya una barra diagonal al final de la carpeta no deseada:zip -d file.jar unwanted_folder/
Martin Woolstenhulme

1

En Java, puede copiar todas las entradas de un archivo jar excepto la que desea eliminar. es decir, tiene que hacer una copia pero no necesita crear los archivos individuales.

Puedes hacer esto por

  • creando un nuevo frasco.
  • iterando a través del tarro que tienes
  • copie la entrada de un frasco a otro, omitiendo los archivos que desee.
  • cierre y reemplace el frasco original si lo desea.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.