更新 jar 中的文件会抛出 ZipException

2023-11-23

我正在尝试使用以下命令更新现有 jar 中的文件(在本例中为 antlr):

jar -uf antlrworks-1.2.3.jar org/antlr/codegen/templates/Java/Java.stg 

但我收到以下消息

java.util.zip.ZipException:重复条目:antlr/ANTLRError.class 在 java.util.zip.ZipOutputStream.putNextEntry(ZipOutputStream.java:175) 在 java.util.jar.JarOutputStream.putNextEntry(JarOutputStream.java:92) 在 sun.tools.jar.Main.update(Main.java:508) 在 sun.tools.jar.Main.run(Main.java:185) 在 sun.tools.jar.Main.main(Main.java:1044)

有任何想法吗?


您正在尝试做正确的事情,但是 jar 文件有问题 - 它有两次相同的条目:((这对于 zip 文件来说是合法的,但并不是真正有用 - 正如您所看到的,它使得jar抱怨。)

如果你跑

jar tvf antlrworks-1.2.3.jar > contents

然后查看生成的contents文件你会看到有各种重复的文件。您可能应该将此报告给 antlr 项目(检查后他们还不知道)。

作为解决方法,您可以提取 jar 文件的内容,再次将其打包,然后then您将拥有一个可以更新的“工作”jar 文件。 (如果您只需要执行此操作一次,您可以提取所需的文件,将其放入其中,然后将整个文件打包,而不是事后更新。)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

更新 jar 中的文件会抛出 ZipException 的相关文章

随机推荐