我从未真正研究过它,但现在我意识到我无法轻松构建两个相同的 .jar 文件。
我的意思是,如果我构建两次,而不更改任何内容,我会得到完全相同的大小,但校验和不同.jar.
所以我很快进行了一些测试(基本上解压, 排序-n -k 5然后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 文件肯定会返回我们独特的文件。
问:这是为什么呢? (我自己来回答)
(回答我自己)正是因为.zip文件格式将创建和修改时间保存在其标头中。
如果您确实想创建两个相同的.zip (or .jar),你必须让第二个相信它是与第一个完全同时创建/修改的。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)