【发布时间】:2011-09-03 08:21:08
【问题描述】:
我想将我的 20 罐应用程序作为 pack200 文件分发,但我还需要提供文件校验和以进行验证。
因为我是偏执狂(谢谢你,JWS),我还想对解压文件进行校验。
pack200 的解压是否确定并在所有平台上给出相同的结果(Win/Mac/Linux 跨 32/64 位)?
换句话说,我可以在一台计算机上解压缩文件,计算它们的校验和,并期望它们在其他计算机上解压缩时始终相同吗?
编辑:感谢 cmets。我正在寻找一些硬性规范来确认或否认这一点。
做出假设(即使基于在几台机器上的测试)意味着风险。
实现可能因平台和 Java 版本而异。即使是相同的实现也会给出不同的结果(考虑 ZIP 目录中项目的顺序?)。这就是为什么我问它是否对于所有平台和 Java 版本都相同 AND 确定性。
如果无法确认或拒绝,那么这个后续问题如何。如何验证解压后的 jar 是否有效?想想半成品文件,伽马射线破坏文件中的单个位等等。
【问题讨论】:
-
Jar 中有每个条目的校验和。如果没有在所有平台上解压相同的内容,它们将被损坏并且应该被检测到。
-
@Peter 谢谢。这是否意味着整个罐子总是相同的?
-
你试过在不同的机器和不同的java版本上解压同一个pack200存档吗?
-
pack200 本身就是一个 Java 应用程序,应该在所有平台上运行相同。很难想象为什么它会有依赖于平台的行为。我会假设它是相同的,除非你知道。
-
@tulskiy 我在这里寻找一些硬参考。我可以在 5 个系统上对其进行测试,但不一定普遍可靠。我的用户可能在第 6 个未经测试的系统上给出不同的结果,或者不同版本的 Java 可能会以不同的方式工作......所以我需要一些硬规范来说明“是的,它总是相同的”。
标签: java