Mavenリポジトリに依存関係のあるgradleを使用してコンパイルするプロジェクトがあります。
何ヶ月も動作していますが、新しいマシンをセットアップするときに、依存関係ファイルへのアクセス エラーでコンパイルできません。
[ant:javac] error: error reading /Users/rayj/.gradle/caches/artifacts-4/com.google.guava/guava/c12498cf18507aa6433a94eb7d3e77d5/jars/guava-11.0.2.jar; cannot read zip file
I was able to reproduce on another machine by removing my gradle cache ("~/.gradle/caches/artifacts-4/").
「破損した」jar ファイルは、「破損していない」jar ファイルとは異なる動作をすることがわかりました。「破損していない」jar ファイルの場合は、名前を「.zip」に変更し、zip を抽出してファイルの内容を確認できます (予想どおり)。「破損した」jar ファイルの場合、名前を「.zip」に変更して zip を抽出すると、別の jar ファイルが出力されます (予期しない)。名前を変更/再度抽出すると、ファイルの内容として適切に抽出されます(予想)。
次の方法で、この問題を手動で回避できます。
for each corrupt jar file {
rename to .jar to .zip and extract to create a new jar //this turns a corrupt jar into a non-corrupt jar)
}
これは、問題が「破損」している jar ファイルにのみ関連していることを示唆しています。
これは機能しますが、自動ビルドにとっては苦痛な解決策です =)
この問題の原因と、根本的な問題のトラブルシューティング方法に関するガイダンスを探しています。