我有一个内置的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