import文最後の余計な;、JDK 1.5と1.6の違い

さんざん悩んで、ほぼ半日つぶしてしまったので、二度とやらないように、これを忘れないようにメモです。

import文の最後に;が二つ付いていると、JDK1.5では理解しがたいメッセージが出てコンパイルエラーになるけれど、JDK1.6では何の問題も無く、コンパイルできてしまうことを知りました。JDK1.5ではクラスパスが見えていないかのようなエラーメッセージが出力されるんです。gitで妙なコマンドをたたいてしまった影響か、あるいは、gitの不思議なファイルシステム(?)にコンパイラが付いていっていないのかも、、と思い、.gitをGITにrenameしてgitの影響がでないようにしてみたり、gitを最新版にしてみたりといろいろ努力したのですが、当然、結果は変わらず。OSXのJDK1.5がヘンになったのかと思い、UbuntuJDKやらなにやらを一式インストールして試してみても、同じ結果。

途方にくれて、NetBeansのエディタ画面をじっと眺めているときに気づきました。import文左端に表示されている、import文一式をfoldできる範囲が短すぎる。。。import文全ての左端に縦線があるはずなのに、2行までで止まっていました。あらためてimport文を凝視すると、、、;が二つある行で縦線が切れているじゃないですか。余計な;を削除したら、縦線は最後のimport文まで伸び、無事JDK1.5でコンパイルできるようになったんです。

クラスを違うパッケージに移したりと、リファクタリングしているうちにこんなimport文になってしまったみたいです。import文をIDE任せにしていると、チェックしなくなるという落とし穴ですね。