neverHappen变量在编译的类中

时间:2013-03-09 11:28:03

标签: grails groovy

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

public static long __timeStamp__239_neverHappen1360886953029;

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

2 个答案:

答案 0 :(得分:3)

它来自groovy class generation。

请参阅此处的一些讨论http://groovy.329449.n5.nabble.com/Timestamp-in-class-files-leads-to-huge-patches-td365696.html

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

  

对于Groovy自己的重新编译机制。来源并不总是在   文件格式,所以我们不能“只是”检查文件的时间戳,所以我们不得不这样做   将时间戳存储在某个地方...并且比在课堂上更好   我们所拥有的一切都是什么?

     

2009年3月3日星期二,10:39,Jason Dillon< [隐藏电子邮件]>写道:

     
    

为什么groovyc会捕获编译时间戳?这有什么用呢?

  

答案 1 :(得分:1)

这在Groovy 2.4中已更改,.class文件不再包含时间戳字段。

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