java - 为什么同一个 JAR 文件在我每次构建时都有不同的哈希值?

标签 java maven jar bytecode

我一直在考虑检查 jar 文件的散列值以确定它是否已更改,但事实证明每次构建同一个 jar 文件时都有不同的散列值(从 eclipse 导出为 jar 文件,或构建它使用 Maven)。我已经删除了 list 文件的日期值和内容,但它仍然不同。字节码生成中是否有包含时间戳或其他内容的内容?

最佳答案

JAR 文件是一个 ZIP 文件,它在其 local file headers 中包含最后修改日期。和中央目录文件头。这将导致您的构建具有不同的哈希值。

如果您在完全相同的一组文件(具有相同的文件日期)上运行 JAR 命令并跳过 list 文件创建,它应该会为您提供完全相同的 JAR 文件(如果 ZIP 中文件的顺序没有改变)。

关于java - 为什么同一个 JAR 文件在我每次构建时都有不同的哈希值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43993329/

相关文章:

java - Semaphore 的大小可以与Threads 的执行顺序相关吗?

java - 复制数组的后半部分

java - Android 上的 JainSip : Sending REGISTER throws Exception

java - 无法运行 OSGI bundle

java - Cobertura 检查 Travis CI 失败

java - Fat Jar 与 Gradle 中应用程序包的优势

android - 为我的项目生成的 Gradle 构建文件;现在运行时出现 noclassdefounderror

java - 最好的 Java 集成脚本语言? (堆栈跟踪和调试)

java - 如何使 Eclipse 使用 bnd 注释自动生成 OSGi 声明性服务捆绑组件 XML?

intellij-idea - 无法在 Intellij 中为 JavaFX 创建 JAR 文件