Portanto, preciso remover um arquivo de um arquivo jar / war. Eu esperava que houvesse algo como "jar -d myjar.jar file_I_donot_need.txt"
Mas agora a única maneira que posso ver de fazer isso na minha linha de comando do Linux (sem usar WinRAR / Winzip ou equivalente do Linux) é
- Execute "jar -xvf" e extraia o
arquivo Jar completo - Remova o (s) arquivo (s) de que não preciso
- Rejar o arquivo jar usando "jar -cvf"
Por favor, diga-me que existe um caminho mais curto?
./myscript.sh -d <list of files>
Respostas:
jar é apenas um arquivo zip, afinal. Definitivamente, muito mais rápido do que descompactar / recomprimir.
fonte
zip
e, neste caso, é importante especificar o formato do arquivo:7z d -tzip file.jar dir/unwanted_file.txt
zip -d file.jar unwanted_folder/
Em Java, você pode copiar todas as entradas de um jar, exceto aquela que deseja excluir. ou seja, você precisa fazer uma cópia, mas não precisa criar os arquivos individuais.
Você pode fazer isso por
fonte
No caso de desejar excluir o arquivo para cancelar a assinatura do jar, você provavelmente pode fazer com que o arquivo .RSA tenha o tamanho zero. Isso pode ser feito com apenas
jar u
. Consulte https://stackoverflow.com/a/24678645/653539 . (Funcionou para mim, embora eu admita que é um hack.)fonte