開発モードではソースコードの修正に反応して自動的に再コンパイルしてくれる・・ことになっている。だが、稀に思うように再コンパイルがかからずに修正したのにエラーが改善されないこともある。
たとえば下記のようなバグ修正のケース。
Integer x = ....
Data d = DataDAO.getPrimaryData(x);
class DataDAO {
public static Data getPrimaryData(int x) { .. }
}
呼出元でxにnull
が入っていると、getPrimaryData
の呼出時に引数int
型に変換できずにヌルポが発生する。これを回避するために呼出先の引数をInteger
型に修正したとしよう。
class DataDAO {
public static Data getPrimaryData(Integer x) { .. }
}
呼出先のファイルは修正が行われたために再コンパイル対象となるが、呼出元のファイルは対象にならない。int
型を引数にして呼び出そうとしている部分がそのままのため、修正が反映されないのだ。
修正したはずのにエラーが解消されない、俺は間違ってないはずだ!
そのような場合はコンパイルされたバイトコードなどが格納されている /tmp
ディレクトリ配下をクリアしよう。強制的にフルコンパイルが走るので、上記のような整合性の問題が解消される。