【问题标题】:Why do these two jar files with identical contents have different file sizes?为什么这两个内容相同的jar文件文件大小不同?
【发布时间】:2009-03-16 15:27:23
【问题描述】:

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

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

在新的源代码树中是 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 上运行编译。

【问题讨论】:

  • “旧”和“新”源代码树有什么区别?你改名了吗?

标签: java jar


【解决方案1】:

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

【讨论】:

  • 文件修改时间从 jar 列表中删除。只有文件大小和类名。
  • 谁在乎列表?修改时间存储在 JAR 文件中。当您重新编译代码并创建新的 JAR 文件时,它们显然会发生变化。
  • 同意,时间是存储压缩的,所以JAR大小会改变。
【解决方案2】:

可能并非如此 - 但您在编译两个源代码库时是否使用不同的编译器版本(甚至是微小的版本差异)?

【讨论】:

    【解决方案3】:

    如果您使用BeyondCompare(或类似名称),它将区分您的 jar 文件并识别档案中的不同文件(直至文本文件的行/字符差异,或仅突出显示已更改的二进制文件) .

    (我不认为文件修改时间存储在 .jar 格式的文本表示中,我不相信它们会影响 .jar 文件大小)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-27
      • 2015-11-18
      • 2013-12-01
      • 2012-03-31
      • 1970-01-01
      • 2023-03-24
      相关资源
      最近更新 更多