[play1]修正したのに…再コンパイルされない

  playframework1

開発モードではソースコードの修正に反応して自動的に再コンパイルしてくれる・・ことになっている。だが、稀に思うように再コンパイルがかからずに修正したのにエラーが改善されないこともある。

たとえば下記のようなバグ修正のケース。

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 ディレクトリ配下をクリアしよう。強制的にフルコンパイルが走るので、上記のような整合性の問題が解消される。

LEAVE A COMMENT