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


105

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

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

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

もっと短い道があると教えてください。


3
「jar」は単なるzipファイルなので、superuser.comで運が良さそうです。
Kirk Woll 2010

プロセス全体をラップするシェルスクリプトを作成してみることもできます。何か./myscript.sh -d <list of files>
ファボニウス

回答:


202
zip -d file.jar unwanted_file.txt

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


3
私はより頻繁にp7zipのが代わりにインストールされているzipと、この場合には、ファイル形式を指定することが重要です:7z d -tzip file.jar dir/unwanted_file.txt
のLaPO

@martona次のエラーが発生します:zipエラー:zipファイルの構造
Goaler444

@ Goaler444同じエラーが発生しましたが、lapoの提案どおりに7zを使用するとうまくいきました。
yby 2014年

子jarまたは孫子jarからファイルを削除する方法
トム

5
:あなたは瓶の中のフォルダを削除する場合は、必ず不要なフォルダ上の末尾のスラッシュがあることを確認してくださいzip -d file.jar unwanted_folder/
マーティンWoolstenhulme

1

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

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

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.