所以我需要从 jar/war 文件中删除一个文件。 我希望有类似“ jar-d myjar.jar file _ I _ donot _ need. txt”的文件
但是现在我能看到的在我的 Linux 命令行(不使用 WinRAR/Winzip 或 Linux 等价物)中完成这项工作的唯一方法是
请告诉我有捷径吗?
在 Java 中,你可以复制一个 jar 的所有条目,除了你想删除的那个。也就是说,你必须做一个拷贝,但不需要创建单独的文件。
你可以通过
zip -d file.jar unwanted_file.txt
Jar 毕竟只是一个 zip 文件,肯定比解压缩/重压缩要快得多。
如果要删除文件以取消签名的 jar,那么可以只使用。RSA 文件大小为零。这可以用 jar u来完成。见 https://stackoverflow.com/a/24678645/653539。(对我来说很管用,虽然我承认这很蹩脚。)
jar u
如果您希望以编程方式执行此操作,可以使用 Zip File System 将 Zip/jar 文件视为文件系统。这将允许您编辑、删除和向 jar 文件添加文件。
参见 用 Java 将文件附加到 zip 文件