有没有一种快速的方法可以从Jar / war中删除文件而无需解压缩jar并重新创建它?


105

因此,我需要从jar / war文件中删除文件。我希望有类似“ jar -d myjar.jar file_I_donot_need.txt”的内容

但是现在,我可以从Linux命令行(不使用WinRAR / Winzip或Linux等效版本)看到的唯一方法是

  • 执行“ jar -xvf”并提取
    完整的Jar文件
  • 删除我不需要的文件
  • 使用“ jar -cvf”重新打包jar文件

请告诉我还有更短的方法吗?


3
由于“ jar”只是一个zip文件,我怀疑您在superuser.com上会更好。
柯克·沃尔

您也可以尝试编写Shell脚本来包装整个过程。就像./myscript.sh -d <list of files>
Favonius 2010年

Answers:


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 2013年

@ Goaler444我有同样的错误,但是使用7z作为lapo建议对我有用。
yby

如何从子jar或大子jar中删除文件?
2014年

5
如果要删除jar中的文件夹,请确保不需要的文件夹上有斜杠:zip -d file.jar unwanted_folder/
Martin Woolstenhulme

1

在Java中,您可以复制jar的所有条目,但要删除的条目除外。也就是说,您必须进行复制,但无需创建单个文件。

你可以这样做

  • 创建一个新的jar。
  • 遍历您拥有的Jar
  • 将条目从一个jar复制到另一个jar,跳过您想要的任何文件。
  • 如果需要,关闭并更换原始的广口瓶。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.