web-dev-qa-db-ja.com

jarを抽出して再作成せずに、jar / warからファイルを削除する簡単な方法はありますか?

そのため、jar/warファイルからファイルを削除する必要があります。 「jar -d myjar.jar file_I_donot_need.txt」のようなものがあることを望んでいました

しかし、今のところ、これをLinuxコマンドラインから(WinRAR/Winzipまたは同等のLinuxを使用せずに)行う唯一の方法は、

  • 「jar -xvf」を実行して抽出します
    完全なJarファイル
  • 不要なファイルを削除する
  • 「jar -cvf」を使用してjarファイルを再調整します

もっと短い方法がありますか?

95
kellyfj
Zip -d file.jar unwanted_file.txt

jarは結局のところZipファイルです。圧縮解除/再圧縮よりもはるかに高速です。

188
martona

Javaでは、削除したいものを除くjarのすべてのエントリをコピーできます。つまり、コピーを作成する必要がありますが、個々のファイルを作成する必要はありません。

あなたはこれをすることができます

  • 新しいjarを作成します。
  • あなたが持っている瓶を繰り返します
  • 必要なファイルをスキップして、1つのjarから別のjarにエントリをコピーします。
  • 必要に応じて元のjarファイルを閉じて交換します。
1
Peter Lawrey

署名済みjarの署名を解除するためにファイルを削除する場合は、おそらく.RSAファイルのサイズをゼロにすることができます。これは、単にjar uhttps://stackoverflow.com/a/24678645/653539 を参照してください。 (ハックだと認めていますが、私のために働きました。)

0