从jar中解压缩单个文件会给出java.util.zip.ZipException:无效的CEN标头(错误签名)

时间:2019-10-18 21:02:55

标签: java bash shell jar

我有一个内置的jar文件,想从其中提取一个文件。

但是,当我运行以下命令从jar中提取单个文件时:

jar -xf test.jar example.txt

我收到以下错误:

java.util.zip.ZipException: invalid CEN header (bad signature)
at java.util.zip.ZipFile.open(Native Method)
at java.util.zip.ZipFile.<init>(ZipFile.java:127)
at java.util.zip.ZipFile.<init>(ZipFile.java:88)
at sun.tools.jar.Main.extract(Main.java:875)
at sun.tools.jar.Main.run(Main.java:236)
at sun.tools.jar.Main.main(Main.java:1149)

StackOverflow上的其他页面上出现此错误的消息可能是jar损坏,但是如果我尝试提取每个文件:

jar -xf test.jar

该命令成功运行,没有错误,并且提取了每个文件,因此我不确定jar是否确实损坏。

更新-作为一种解决方法,我可以使用以下方法成功提取文件:

unzip test.jar example.txt

但是,如果我尝试编辑txt文件,然后使用以下命令将其重新添加到jar中:

zip test.jar example.txt

我收到以下错误:

zip warning: expected 43976 entries but found 109512

zip error: Zip file structure invalid (test.jar)

即使很奇怪,我也可以使用以下命令将已编辑的txt文件成功添加到jar中:

jar -uf test.jar example.txt

0 个答案:

没有答案