6

我在我的 Grails 项目中更改了几个类并构建了一个 war 文件。然后,我将新战争中的 .class 文件与我更改之前构建的战争中的文件(在另一台机器上,如果这很重要)进行比较,结果发现许多(如果不是全部).class 文件是不同的。查看反编译的类,似乎差异是因为变量中的时间戳,例如:

public static long __timeStamp__239_neverHappen1360886953029;

有谁知道这个变量是什么?

4

2 回答 2

3

它来自 groovy 类生成。

在这里查看一些讨论http://groovy.329449.n5.nabble.com/Timestamp-in-class-files-leads-to-huge-patches-td365696.html

为了完整起见,在此引用:-

对于 Groovy 自己的重新编译机制。源并不总是文件形式,所以我们不能“仅仅”检查文件时间戳,所以我们必须将该时间戳存储在某个地方......并且比在类本身更好,因为这就是我们所拥有的?

2009 年 3 月 3 日星期二 10:39,Jason Dillon <[hidden email]> 写道:

为什么 groovyc 会捕获编译时间戳?那有什么好处?

于 2013-03-10T06:02:23.030 回答
1

这在 Groovy 2.4 中发生了变化,.class 文件不再包含时间戳字段。

https://github.com/groovy/groovy-core/commit/bcdb89e

于 2015-10-01T08:12:48.880 回答