为什么这两个内容相同的jar文件有不同的文件大小?

时间:2009-03-16 15:27:24

标签: java jar

我正在重新组织我们的java代码库,并希望比较我们生成的jar文件。

当我在旧的源代码树中构建时,我得到的jar文件大小为3360081。

在新的源代码树中,它是3360128。

我做了一个“jar tvf jarfile”,然后从文件中删除日期。

该列表如下所示:

     0 Mon Mar 16 10:41:16 EDT 2009 META-INF/
   102 Mon Mar 16 10:41:14 EDT 2009 META-INF/MANIFEST.MF
     0 Mon Mar 16 10:41:14 EDT 2009 decodes/

删除日期后,列表如下所示:

     0  META-INF/
   102  META-INF/MANIFEST.MF
     0  decodes/

两个jar列表完全相同。

什么会导致“相同”jar文件中的47字节差异?

我在RedHat Linux 4上运行编译。

3 个答案:

答案 0 :(得分:7)

编译文件的文件修改时间很可能是原因。此外,您的类文件可能实际上是不同的。如果你重新组织了你的包结构,他们肯定会。

答案 1 :(得分:2)

情况可能并非如此 - 但是在编译两个源代码库时,你是否有可能使用不同的编译器版本(即使是较小的版本差异)?

答案 2 :(得分:1)

如果您使用BeyondCompare(或类似),它将区分您的jar文件并识别存档中的不同文件(直到文本文件的行/字符差异,或者只是突出显示有二进制文件的文件改变)。

(我不认为文件修改时间以.jar格式存储在文本表示中,我不相信它们会对.jar文件大小有所贡献)