問題
Javaのトラブルシューティングで遭遇する厄介な問題に、原因不明のClassNotFoundException
がある。原因を調べていくと、ローカルMavenリポジトリのJARが壊れていた、ということがある。とくに、外部Mavenリポジトリサーバが一時的にダウンしていたり、別のURLに移動したりしていた場合、中身がHTML(Webサーバのエラーページ)のJARがリポジトリに紛れ込んでいることがある。
こういった問題のトラブルシューティングは非常に面倒なので、原因不明のエラーに悩まされないためにも、このような中身がHTML形式になっている壊れたJARをローカルMavenリポジトリから一掃したい。
解決方法
ローカルのMavenリポジトリに行って、以下のコマンドを実行する。
$ cd ~/.m2/repository/
$ find . -type f -name *.jar | xargs file --mime-type -F '' | grep "text/html" | awk '{ print $1 }' | xargs -I{} rm -v {}