I’m trying to update a file in an existing jar (in this example antlr) using the command:
jar -uf antlrworks-1.2.3.jar org/antlr/codegen/templates/Java/Java.stg
But I get the following message
java.util.zip.ZipException: duplicate entry: antlr/ANTLRError.class
at java.util.zip.ZipOutputStream.putNextEntry(ZipOutputStream.java:175)
at java.util.jar.JarOutputStream.putNextEntry(JarOutputStream.java:92)
at sun.tools.jar.Main.update(Main.java:508)
at sun.tools.jar.Main.run(Main.java:185)
at sun.tools.jar.Main.main(Main.java:1044)
Any ideas?
You’re trying to do the right thing, but the jar file is problematic – it’s got the same entry twice 🙁 (This is legal for a zip file, but not really helpful – and as you can see, it makes
jarcomplain.)If you run
and then look at the generated
contentsfile you’ll see that there are various duplicate files. You should probably report this to the antlr project (after checking they don’t already know).As a workaround, you can extract the contents of the jar file, jar it up again, and then you’ll have a “working” jar file you can update. (If you only need to do this once, you can just extract, put the file you want in there, and then jar the whole lot up rather than updating it afterwards.)