mvn eclipse:eclipseでコンパイルが通らなくなってしまった
気づいたら、mvn eclipse:eclipseで生成される.classpathでコンパイルが通らなくなってしまった。
Mavenでこういう、ある日突然挙動が変わった現象が発生したら、Mavenのpluginがバージョンアップしたことによる影響の可能性がかなり高い。
Mavenのpluginは、
今回も原因はやはりそうで、maven-eclipse-pluginのバージョンが2.5.1 -> 2.6に上がったことによる影響でした。
2.6の変更点一覧を見てみると、MECLIPSE-437が影響してそうである。
どうも、JDKのライブラリ(org.eclipse.jdt.launching.JRE_CONTAINER)の設定順序が.classpathのエントリの一番下になったっぽい。そのため、JDKに含まれるクラスと同じクラスを持つJARファイルが存在する場合、JDKより優先されてしまう(今までは逆だった)。で、もしクラスの内容が異なると、コンパイルエラーになったりします。
とりあえず今回は、maven-eclipse-pluginを2.5.1で固定にして対応しましたが、重複クラスがある状態なので本当はよろしくないですね。依存JARを一度見直した方がいいかなー。