当前位置: 首页 > 面试题库 >

在jar中更新文件会引发ZipException

宣滨海
2023-03-14
问题内容

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

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

但是我收到以下消息

java.util.zip.ZipException:重复条目:java.util.zip.ZipOutputStream.putNextEntry(ZipOutputStream.java:175)上的antlr
/
ANTLRError.class,java.util.jar.JarOutputStream.putNextEntry(JarOutputStream.java:92)上的antlr
/
ANTLRError.class在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文件的内容,再次对其进行jar处理, 然后 将有一个可以更新的“有效”
jar文件。(如果您只需要执行一次,则可以将其提取出来,放入所需的文件中,然后将整个文件打包,而不是随后进行更新。)



 类似资料:
  • 问题内容: 我想用一个新的 jar* 更新一个 .class 文件。什么是最简单的方法,尤其是在Eclipse IDE中? * 问题答案: 本教程详细介绍了如何更新jar文件 其中“ u”表示更新。

  • 问题内容: 因此,我一直在寻找一个高低的答案,显然找不到令人满意的答案。 问题是我想在JAR内更新JAR(或与此相关的任何文件),但是所说的文件在文件夹结构内,我想避免在JAR之外重现,以便我可以对其进行更新。 例: 因此,如果要使用 jar 命令更新此文件,则必须先在JAR外部创建相同的文件夹结构,然后再执行 但是,我想避免创建此文件夹结构,因为对于某些文件而言,它可能很深,而且因为我可能需要在

  • 我经常使用某个jar文件来显示文本文件并允许您以不同的方式过滤列表。 在我从Java 7升级到Java 10之前,这一切都非常有效。现在它将不再显示资源文本文件。 下面是我获取jar文件的位置:https://github.com/dragan224/battle_cats_en_combos jar文件的根目录中有两个。jar在其内部使用的txt文件。是否存在阻止此操作的安全设置?还是版本更改导

  • 我有一个具有两列主键的表。 未捕获的异常“PDOException”,包含消息“SQLSTATE[23000]”:完整性约束违反:1062中键“Primary”的重复项“157-433”... 为什么它不只是更新现有的(157,433)-行?

  • 问题内容: 我正在尝试了解如何在Elasticsearch中更新索引文档。我不明白它是如何工作的?什么是该API指的是在做什么?假设您有一个带有嵌套文档的文档,您需要做什么来更新它? 删除文档然后索引“已更新”版本与普通更新之间有什么区别? 问题答案: 更新请求从Elasticsearch检索源,对其进行修改并将其索引回Elasticsearch。如果您已经具有使用更新的文档副本,则毫无意义。仅索

  • 问题内容: 我有两个架构文件,一个是从另一个导入的。在Eclipse模式中执行代码时找到了,但是从jar模式文件中执行代码时找不到了 这是代码 这是我得到的错误 谢谢 问题答案: 如果是import ,则只需定义如下所示的架构工厂就足够了。该api足够聪明,可以加载导入/包含的架构。 我验证了它在1.5和1.6上都能正常工作。在1.6上,如果使用DOM ,也可能会遇到此问题。