[英]java.util.zip.zipException while building NativeScript project
我在为 Android 准备 NativeScript 项目时遇到
java.util.zip.ZipException<\/code> (
tns prepare android<\/code> ):
Failed to build plugin nativescript-barcodescanner :
Error: Command ./gradlew failed with exit code 1 Error output:
Exception in thread "main" java.util.zip.ZipException: zip END header not found
TL; DR:我的~/.gradle
中的一个zip文件有问题。 重新下载文件即可解决问题。
我的推理错误是这样的:
仅当安装了某些插件(nativescript-barcodescanner和nativescript-socket.io)时,才会出现此错误。 如果我尝试在没有这些插件的情况下进行构建,则该构建可以正常进行。 因此,Gradle本身可能不是问题(例如在此答案中 )。
一些构建工作的事实并不一定意味着 Gradle的设置正确。 NativeScript似乎对不同的任务使用不同的版本(在我的情况下, gradle-4.4-bin
用于插件构建,而gradle-4.4-all
用于完整项目构建)。 如果仅项目构建版本有问题,则该构建可用于某些设置,但在需要插件构建时也会失败。
快速解决方案:删除~/.gradle
文件夹,然后再次运行build命令(如本GitHub issue中所述 )。
较慢的解决方案:为避免重新下载整个设置,请浏览~/.gradle/wrapper/dists
的gradle-*.zip
文件,并找出哪一个有问题(这可能意味着未正确下载) )。 这些文件将被命名为(例如):
~/.gradle/wrapper/dists/gradle-4.4-bin/bgaq7vklkazwgxox0hdadxbvi/gradle-4.4-bin.zip
要检查拉链是否有问题,请将文件大小和/或sha-sum与该Gradle分发列表进行比较 。 仅打开.zip
不足以进行测试 ,因为许多文件管理器都会打开未完全下载的部分下载/不完整的zip文件。
找到故障文件后,将其删除并重新运行tns build
命令。 它将自动下载丢失的文件并继续构建。 或者,您可以从上面的链接手动下载文件并将其放置在正确的目录中。
粘贴 distributionUrl=https://services.gradle.org/distributions/gradle-7.0.2-all.zip
7.0.2 <- 这个随版本变化(输入最新的gradle版本)
并运行项目!
我遇到了这个问题,注意到下载的
gradle-xxxxzip<\/code>大小与实际大小不同(
gradle-7.3.3-bin<\/code>大小为 110 MB,但下载的大小为 101 MB)。
因此,我决定手动下载并将
distributionUrl<\/code>更改为本地文件
gradle-wrapper.properties<\/em>
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=gradle-7.3.3-bin.zip
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.