コードが変更されるたびに、いくつかの高価な更新メソッドを呼び出す必要があります。 Eclipseでctrl-sを押すと、ファイルの保存とホットコードの置換が実行され、プログラムはファイルが保存されたことを確認して、約5秒の時間を費やしてから画面を更新します。コードが変更されているかどうかをチェック
私は毎秒数回呼び出すこの事を、使用しています:
public static long lastSourceUpdate=0;
private static boolean wasUpdated() {
File source = new File("/home/user/workspace/package/AClass.java");
long t = source.lastModified();
if (t>lastSourceUpdate+2000) { // wait for hcr
lastSourceUpdate=t;
return true;
}
return false;
}
このアプローチには問題があります。コンパイルとホット以来ファイルが信頼できないチェック
- は、コードの置き換えは、ファイルが変更されてから数秒で完了します。そのため、上記の2000msの遅延があります。このメソッドがtrueを返すにもかかわらず、私が変更したコードは更新されません - あるいは悪いことに、Eclipseは数値の途中でそれを更新し、結果は絶えず混乱します。
- ファイルを検査することはどんな場合でもハックです。クラスをチェックする必要があります。おそらくディスクは関与する必要はありません。
- これは1つのクラスだけをチェックしますが、パッケージ全体をチェックしたり、プロジェクトに何か変更を加えたりすることがあります。ファイルが変更されると、パッケージディレクトリのlastModifiedは変更されません。フォルダ/パッケージの再帰スキャンは機能しますが、パッケージが巨大であればあまり優雅ではありません。
- Looks ugly。
コードが変更されたときに確認するにはどうすればよいでしょうか?おそらく反射? serialVersionUIDチェック?クラス自体がcompilationDateフィールドを持っているのと同じではありませんか? Eclipseが更新する秘密の価値はありますか? Eclipseが保存ごとに変更するファイルはありますか?
ありがとうございます。
このEclipse機能をコーディングしていますか?または日食を使用して、これを取り除きたいですか?後で、ビルド時にビルドを無効にして、自分のビルドアイコン(ビルドアイコンをクリック)が来たらビルドしてください。 – OscarRyz
他のすべてのビルドが完了した後に起動するEclipseビルダーとしてこれを実装できますか?変更されたものを完全にチェンジセットして、高価なファイルチェックに頼る必要はありません。 – MRalwasser
これは日食特有の問題ではありません。私はJavaプログラムが、Eclipseのデバッグのホットコードの置き換え、または他の手段を介して発生する可能性のあるコードが変更されたことを知りたがっています。 @MR Eclipseビルダーは自分のプログラムと簡単にやり取りできますか? –