Java / zip:为什么不确定地创建.jar文件?

问题描述 投票:12回答:2

我从没有真正研究过它,但是现在我意识到我无法轻松地构建两个相同的.jar文件。

我的意思是,如果我进行两次构建,而没有进行任何更改,则。jar的大小将完全相同,但校验和将不同。

所以我迅速进行了一些测试(基本上是unzippingsort -n -k 5 ing,然后是diff'ing),以查看所有文件inside .jar相同,但.jar不同。

所以我用一个简单的。zip文件进行了测试,发现了这一点:

... $ zip 1.zip a.txt
... $ zip 2.zip a.txt
... $ ls -l ?.zip
-rw-rw-r-- 1 webinator webinator 147 2010-07-21 13:09 1.zip
-rw-rw-r-- 1 webinator webinator 147 2010-07-21 13:09 2.zip

(完全相同的[[.zip文件大小)]

... $ sha1sum ?.zip db99f6ad5733c25c0ef1695ac3ca3baf5d5245cf 1.zip eaf9f0f92eb2ac3e6ac33b44ef45b170f7984a91 2.zip
((不同的SHA-1总和,让我们看看为什么)

$ hexdump 1.zip -C > 1.txt $ hexdump 2.zip -C > 2.txt $ diff 1.txt 2.txt 3c3 < 00000020 74 78 74 55 54 09 00 03 ab d4 46 4c*4e*d5 46 4c |txtUT.....FLN.FL| --- > 00000020 74 78 74 55 54 09 00 03 ab d4 46 4c*5d*d5 46 4c |txtUT.....FL].FL|

解压缩两个zip文件肯定会返回我们唯一的文件。

问题:为什么? (我会自己回答)

java zip
2个回答
6
投票

(对自己的回答)这是因为。zip文件格式在其标题中节省了创建和修改时间。

如果您确实要创建两个相同的

。zip

(或。jar),则必须使第二个相信它是与第一个完全同时创建/修改的。
© www.soinside.com 2019 - 2024. All rights reserved.