我有一个项目,它使用gradle与maven repo中的依赖项进行编译。
它已经工作了好几个月,但是在设置新机器时,我无法编译,错误访问依赖文件。
[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”并解压缩以查看文件的内容(如预期的那样)。 对于“损坏的”jar文件,如果我重命名为“.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文件“腐败”有关。
虽然这有效,但对于自动构建来说,这是一个痛苦的解决方案=)
我正在寻找关于可能导致此问题以及如何解决根本问题的一些指导。
答案 0 :(得分:1)
正如@ peter-niederwieser上面提到的那样,通过升级Gradle解决了这个问题!很容易。