Is there a quick way to delete a file from a Jar / war without having to extract the jar and recreate it?
zip -d file.jar unwanted_file.txt
jar is just a zip file after all. Definitely much faster than uncompressing/recompressing.
In Java you can copy all the entries of a jar except the one you want to delete. i.e. you have to make a copy but don't need to create the individual files.
You can do this by
- creating a new jar.
- iterating though the Jar you have
- copy the entry from one jar to the other, skipping any files you want.
- close and replace the orginal jar if you want.
In case you want to delete file in order to unsign signed jar, you can probably just make the .RSA file zero-sized. This can be accomplished with just jar u
. See https://stackoverflow.com/a/24678645/653539 . (Worked for me, though I admit it's hack.)