我有一个项目,它使用 gradle 在 maven 存储库中进行编译,并带有依赖项。
它已经工作了好几个月,但是在设置新机器时,我无法编译,访问依赖文件时出错。
[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 文件有关。
尽管这可行,但对于自动构建来说,这是一个痛苦的解决方案 =)
我正在寻找有关可能导致此问题的原因以及如何解决根本问题的指导。