Java 可以修改一个.jar文件而不创建一个全新的文件吗?

Java 可以修改一个.jar文件而不创建一个全新的文件吗?,java,Java,我正在开发一个Java应用程序。本质上,它选择一个.jar文件,然后将一些文件插入其中 我使用的答案来自。但是,它很慢,因为它实际上是创建一个全新的文件,并手动将所有文件(包括旧文件)复制到其中 我觉得这很奇怪。如果不创建一个全新的.jar文件,就不能修改它吗?不。它是一个ZIP文件,本质上是顺序文件。所有更新它们的工具都是通过复制来完成的,您也必须这样做。您可以使用它来添加和删除JAR中的文件。它只是一个ZIP文件。我认为没有外部库是不可能的。JAR文件只是档案。您可以使用与tar相同的语法提

我正在开发一个Java应用程序。本质上,它选择一个
.jar
文件,然后将一些文件插入其中

我使用的答案来自。但是,它很慢,因为它实际上是创建一个全新的文件,并手动将所有文件(包括旧文件)复制到其中


我觉得这很奇怪。如果不创建一个全新的
.jar
文件,就不能修改它吗?

不。它是一个ZIP文件,本质上是顺序文件。所有更新它们的工具都是通过复制来完成的,您也必须这样做。

您可以使用它来添加和删除JAR中的文件。它只是一个ZIP文件。我认为没有外部库是不可能的。JAR文件只是档案。您可以使用与tar相同的语法提取和创建。jar-xvf,jar-cvf等等。@Chloe:使用Java…不是真的:@DonaldW这个问题甚至不相关:它是关于编辑单个文件而不是添加新文件,这就是这个问题。我没有看到任何与这个答案相矛盾的东西,只有工具的使用,它们的行为就像我上面所描述的那样。“所有更新它们的工具都是通过复制来实现的”这句话显然是不正确的@DonaldW我没有看到任何实际的证据,除了一些与我一致的陈述,并给出了令人信服的理由,例如文件末尾的目录。您不知道这些虚拟化API在幕后是如何工作的。重新编辑单个文件您还需要考虑目录中的CRC。我已经设法更新了一个.JAR文件,而没有复制它或重新创建它的内容。我使用了Java的Zip文件系统: