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 <[隠しメール]> は次のように書いています。

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 に答える