Você pode fazer isso em duas etapas:
zip -d myjar.jar path/to/file/to/delete
jar uf myjar.jar -C base/path path/to/file/to/add
Você pode ignorar a -C base/path
parte se já estiver no diretório base (contendo path/to/file/to/add
).
Ao trabalhar com JARs em vez de arquivos ZIP simples, você deve ter o hábito de usar jar
em vez de zip
na medida do possível; garante que o manifesto seja armazenado corretamente.
Com um arquivo ZIP simples, você pode adicionar ou atualizar um arquivo simplesmente (re-) arquivando-o; então, ao invés do comando jar
acima, use:
zip myzip.zip path/to/file/to/add
Você precisa estar no diretório base para que isso funcione. ( jar
funcionará também, mas é estranho exigir jar
ao trabalhar com arquivos ZIP.)