繁体   English   中英

"构建 NativeScript 项目时出现 java.util.zip.zipException"

[英]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/distsgradle-*.zip文件,并找出哪一个有问题(这可能意味着未正确下载) )。 这些文件将被命名为(例如):

~/.gradle/wrapper/dists/gradle-4.4-bin/bgaq7vklkazwgxox0hdadxbvi/gradle-4.4-bin.zip

要检查拉链是否有问题,请将文件大小和/或sha-sum与该Gradle分发列表进行比较 仅打开.zip不足以进行测试 ,因为许多文件管理器都会打开未完全下载的部分下载/不完整的zip文件。

找到故障文件后,将其删除并重新运行tns build命令。 它将自动下载丢失的文件并继续构建。 或者,您可以从上面的链接手动下载文件并将其放置在正确的目录中。

  1. 转到 .gradle 文件夹
  2. 如果有并且找到最新的 Gradle 版本
  3. 打开 VS 代码并在文件中探索 project-> Android->gradle/wrapper->gradle-wrapper.properties

粘贴 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM