[Java]FilerException: Source file already created って言われる
カテゴリ:IT関連
[DOMA4011] クラス[xxx.xxx.xxxx.xxxxxxx]のアノテーション処理に失敗しました。
原因は次のものです。javax.annotation.processing.FilerException: Source file already created: /
xxxxx/.apt_generated/xxx/xxx/xxxx/xxxxxxx.java
気が付いたらこんなエラーが出るようになった。アノテーション処理で作成されるファイルがすでに作成されてます的なエラーなのはわかるんだけど、今までちゃんと動いていたものがなぜ動かなくなったんだろう?
コード自体には問題ないからエラーが出ててもちゃんと動く。だから気になりつつも放置してたんだけど、日に日に同様のエラーが増えていってついには動作そのものにも影響が出てきた。存在してるファイルが存在しないなんて言い出す始末。
これだと業務が滞るのでいろいろ調べて対策するもうまくいかない。そもそも情報が少ない。どうやら Eclipse のバグっぽいってのはわかった。このとき使っていたのが4.4。
あれこれやってみたけど結局 Eclipse のバージョンを4.5に上げてなんとか解決。今のところ再発していないので4.4のバグで間違いなさそう。
※追記あり4.5でも再発
ちなみに4.5に切り替えた時にこんなエラーが出た。
An internal error occurred during: "Building workspace". GC overhead limit exceeded
メモリ周りが足りなかったっぽいので eclipse.ini で -Xms2048m -Xmx2048m -XX:MaxPermSize=2048m を設定。
※追記
Mars 4.5.1 でも再発。さらにいろいろ調べてみたけど根本的な解決は出来ていないっぽい。なんでも一度でコンパイルできるファイルの数が2000までに制限されているとか。でも解決する方法はある。eclipse.ini に1行追加するだけ。ただ追加するだけでいかと思っていたけど追加する場所が重要。-vmargs の下でないといけないらしい。
eclipse.ini
:
-vmargs
-DmaxCompiledUnitsAtOnce=10000 ←これ追加
: