有没有一个快速的方法来从jar / war中删除文件,而不必提取jar并重新创build它?

所以我需要从jar / war文件中删除一个文件。 我希望有像“jar -d myjar.jar file_I_donot_need.txt”

但是现在我可以看到从我的Linux命令行(不使用WinRAR / Winzip或者linux等效)做到这一点的唯一方法是

  • 做“jar -xvf”并解压
    完整的jar文件
  • 删除我不需要的文件
  • 使用“jar -cvf”来压缩jar文件

请告诉我有一个更短的方法?

 zip -d file.jar unwanted_file.txt 

jar只是一个zip文件毕竟。 肯定比解压缩/重新压缩快得多。

在Java中,您可以复制除了要删除的jar外的所有条目。 即你必须做一个副本,但不需要创build单个文件。

你可以这样做

  • 创造一个新的jar子。
  • 迭代你的jar子
  • 将条目从一个jar复制到另一个,跳过任何你想要的文件。
  • closures并取代原瓶,如果你想。

如果您想要删除文件以便签名签名的jar文件,那么您可能只需要将.RSA文件设置为零。 这可以用jar u来完成。 请参阅https://stackoverflow.com/a/24678645/653539 。 (为我工作,虽然我承认这是黑客。)