IDEA 使用 Gralde 报错: Cause: zip END header not found

开开心心的打开之前的 Gradle 微服务项目,然后点击IDEA 右侧小图标大象图标开始刷新项目,然后就报错了:

在这里插入图片描述

这个错误报的是真好,我竟然没看出什么意思,然后直接上百度Google经排查是因为下载的包有问题(不完整、有损坏之类的);这怎么可能会难住一个开发??? 直接 ClashX 开启,代理走起来,开开心心点击大象小图标,然后又是这。。。。。(复用上面的图,哈哈😆):

在这里插入图片描述

然后我去访问 Gradle 官网(https://services.gradle.org/distributions),没啥问题呀,手动也能下载下来,这就很尴尬;

内心有点小崩溃,之前这项目可是嗖嗖的运行过,没有任何问题,好久不打开就来这。。。然后开始检查 Gradle 配置,结果发现了一个地方 Use Gradle form

在这里插入图片描述

然后开始在项目寻找这个 gradle-wrapper.properties 文件,结果还真的找到了。

在这里插入图片描述

本着探索精神,去 IDEA 官方文档中看了下 Use Gradle from 分别是什么作用,相应描述如下(文档地址):

  • 'gradle-wrapper.properties' file:这是使用 Gradle 包装器的推荐默认选项。(也是日常开发中推荐的方式)

    在这种情况下,您将 Gradle 版本的更新委托给 Gradle,并为构建获取自动 Gradle 下载。此选项还允许您使用精确的 Gradle 版本进行构建。 Gradle 版本保存在项目 gradle 目录下的 gradle-wrapper.properties 文件中,可帮助您消除任何 Gradle 版本问题。

  • 'wrapper' task in Gradle build script:选择此选项可根据包装器任务配置配置 Gradle 包装器。

    如果您更愿意在项目中控制使用哪个 Gradle 版本,这可能会很方便(比如在子模块混用不同版本的 Gradle)。

    如果您使用默认的 Gradle 包装器选项(gradle-wrapper.properties' file),然后切换到 Gradle 包装器任务配置,您在任务中所做的更改会在项目导入期间自动更新。

  • Specified location:如果要手动下载和使用特定 Gradle 版本,请选择此选项。

    指定您的 Gradle 安装位置和 JVM,当您导入指定的 Gradle 项目并执行其任务时,IntelliJ IDEA 将在该 JVM 下运行 Gradle。

敲黑板:虽然有三种方式,但是还是推荐使用第一种,毕竟别人 clone 下代码直接自动下载相应的 Gradle 挺省事的;第二种的话也可以,与第一种类似,写在 gradle 脚本文件中;第三种的话临时开发用可以,就非常适合别人都好好的,就自己电脑有问题的情况,哈哈(气不气)。

言归正传,当找到这个文件后,发现这个项目的配置地址已经失效了,用的是阿里云代码托管的一个仓库,然后我登录进去一看这个仓库不知道被谁删了,着实有点坑了;然后换为 Gradle 官方提供的地址,开开心心的点击大象刷新按钮,成功搞定,继续美滋滋的写 Bug 去。

# 原文件
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://code.aliyun.com/kar/gradle-all-zip-6.8.x/raw/master/gradle-6.8-all.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
# 修改后
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-6.8-all.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists

【注】

  • 如果官方的不可用,可以选择国内提供的 Gradle 地址,但是一般使用 VPN 之后没啥大问题。
  • 搞个私服地址,将所需的文件上传上去,在 gradle-wrapper.properties 文件中使用即可(配置 distributionUrl)。

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注