環境
macOS Sierra
maven 3.5.0
IDE STS 3.8.4
エラー内容
STSでSpringプロジェクトを作成した時に、以下のようなビルドエラーが出る。
Archive for required library: '~/.m2/repository/org/hibernate/hibernate-core/4.2.1.Final/hibernate-core-4.2.1.Final.jar' in project 'ProjectName' cannot be read or is not a valid ZIP file
(missing file) ではないのでファイルは存在している(実際にフォルダを探すと確かに存在している)が、ファイルが壊れていて読み取りできません、的なメッセージ。
Mavenでいろいろなライブラリを読み込んでいますが、なぜかこのファイルだけがエラーになるという不可解な状態。
試したこと1
いろいろ調べてみると似たような事象は多いものの、これだ!という解決策は見つからず。
わかったことは、SpringではなくMavenの問題であることが多いらしい。
ファイルが壊れているということで対象を一度削除して maven で取得し直してみる。
1. hibernate-core を削除
rm -r ~/.m2/repository/org/hibernate/hibernate-core
2. プロジェクトをアップデート
プロジェクトを右クリックして Maven > Update Project...
hibernate-core が再作成されたことを確認してビルド
結果は、何も変わらず。
rm -r ~/.m2/repository
で丸ごと削除して試しても変わりませんでした。
試したこと2
原因がよくわからないので、とりあえずMavenの設定を確認してみます。
1. ローカルリポジトリ
初期状態のままなので、ローカルリポジトリは ~/.m2/repository
ですが。
念のため、${インストールした場所}/maven/conf/settings.xml
の<localRepository>
を設定しておきます。
<!-- localRepository
| The path to the local repository maven will use to store artifacts.
|
| Default: ${user.home}/.m2/repository
<localRepository>/path/to/local/repo</localRepository>
-->
<localRepository>/Users/${ユーザー名}/.m2/repository</localRepository>
この状態で一度プロジェクトをアップデートしてビルドしてみたところ、なぜかエラーが解消されていました。
結局何が原因だったのかよくわかりませんが、一応解決できたので、同じところでつまづかないようにメモしておきます。
参考
Maven のバージョンは違いますが、こちらを参考にさせていただきました。
http://qiita.com/opengl-8080/items/226dd39bd02e41b9de28