以下是常见问题及解决方法的集合。您可以通过搜索 Gradle 论坛StackOverflow #gradle 答案来获取其他提示。

安装故障排除

如果您按照安装说明操作,但无法执行 Gradle 构建,这里有一些可能有帮助的提示。

如果您在仅调用 Gradle Wrapper 之外安装了 Gradle,您可以通过在终端中运行 gradle --version 来检查您的 Gradle 安装。

您应该会看到类似以下内容:

❯ gradle --version

------------------------------------------------------------
Gradle {gradleVersion}
------------------------------------------------------------

Build time:    2025-05-13 06:56:13 UTC
Revision:      3c890746756262d3778e12eaa5155d661d7cbdf2

Kotlin:        2.1.21
Groovy:        4.0.27
Ant:           Apache Ant(TM) version 1.10.15 compiled on August 25 2024
Launcher JVM:  22.0.1 (Oracle Corporation 22.0.1+8-16)
Daemon JVM:    Compatible with Java 17, any vendor, nativeImageCapable=false (from gradle/gradle-daemon-jvm.properties)
OS:            Mac OS X 15.5 aarch64

如果没有,您可能会看到以下内容。

命令未找到:gradle

如果您收到“command not found: gradle”错误,您必须确保 Gradle 已正确添加到您的 PATH 中。

JAVA_HOME 设置为无效目录

如果您收到类似以下错误:

ERROR: JAVA_HOME is set to an invalid directory

将环境中的 JAVA_HOME 变量设置为与您的 Java 安装位置匹配

$ export JAVA_HOME=/Users/user/Library/Java/JavaVirtualMachines/corretto-22.0.1/Contents/Home
$ echo $JAVA_HOME
/Users/user/Library/Java/JavaVirtualMachines/corretto-22.0.1/Contents/Home

您必须确保 Java Development Kit 17 或更高版本已正确安装JAVA_HOME 环境变量已设置,并且 Java 已添加到您的 PATH 中。

权限被拒绝

如果您收到“permission denied”错误,这意味着 Gradle 可能存在于正确的位置,但它不可执行。您可以使用 *nix 系统上的 chmod +x path/to/executable 来解决此问题。

其他安装失败

如果 gradle —-version 可以工作,但您的所有构建都因相同的错误而失败,则可能是您的某个 Gradle 构建配置文件损坏了。

您可以通过运行 gradle help 来验证 Gradle 脚本的问题,这会执行配置文件但不会执行任何 Gradle 任务。如果错误仍然存在,则意味着构建配置存在问题。否则,问题存在于执行一个或多个请求的任务时(Gradle 首先执行配置文件,然后是构建步骤)。

调试依赖解析

常见的依赖解析问题,例如解析版本冲突,在依赖解析故障排除中有所介绍。

您可以通过点击“依赖项”视图并使用搜索功能,指定解析原因,来查看依赖树并查看哪些已解析的依赖项版本与请求的版本不同。

troubleshooting dependency management build scan
图 1. 使用构建扫描调试依赖冲突

实际的带有过滤条件的构建扫描可供探索。

解决构建缓慢问题

有关构建性能问题(包括“同步时间慢”),请参阅提高 Gradle 构建性能

Android 开发者应该观看 Android SDK 工具团队关于加速您的 Android Gradle 构建的演示。Android Studio 用户指南中也涵盖了许多技巧,关于优化构建速度

调试构建逻辑

将调试器附加到您的构建

您可以通过将 org.gradle.debug 属性设置为“true”,然后将远程调试器附加到端口 5005 来在 Gradle 构建本身中设置断点并调试 buildSrc 和独立插件。您可以通过将 org.gradle.debug.port 属性设置为所需的端口号来更改端口号。

要通过网络远程附加调试器,您必须将 org.gradle.debug.host 属性设置为机器的 IP 地址或 *(监听所有接口)。

❯ gradle help -Dorg.gradle.debug=true

使用 Kotlin DSL,您可以调试构建脚本本身。

以下视频演示了如何使用 IntelliJ IDEA 调试示例构建。

remote debug gradle
图 2. 构建脚本的交互式调试

添加和更改日志记录

除了控制日志记录详细程度之外,您还可以使用--console=verbose 标志来控制生命周期日志中任务结果(例如“UP-TO-DATE”)的显示。

您还可以通过注册各种事件监听器来用您自己的日志替换 Gradle 的大部分日志。一个自定义事件记录器的示例在日志记录文档中有所解释。您还可以控制外部工具的日志记录,使其更详细地调试其执行。

Gradle Daemon 的其他日志可以在 $GRADLE_USER_HOME/daemon/9.0.0/ 下找到。

任务已执行,但本应是最新的

--info 日志解释了任务执行的原因,而构建扫描通过进入“时间线”视图并单击要检查的任务,以可搜索的、可视化的方式完成此操作。

troubleshooting task execution build scan
图 3. 使用构建扫描调试增量构建

您可以从此列表了解任务结果的含义。

调试 IDE 集成

IDE 中许多不常见的错误可以通过“刷新”Gradle 来解决。另请参阅有关使用 Gradle 在 IntelliJ IDEA 中在 Eclipse 中的更多文档。

刷新 IntelliJ IDEA

这仅适用于已链接到 IntelliJ 的 Gradle 项目。

从主菜单中,转到 View > Tool Windows > Gradle。然后单击“刷新”图标。

troubleshooting refresh intellij
图 4. 在 IntelliJ IDEA 中刷新 Gradle 项目

刷新 Eclipse(使用 Buildship)

如果您正在使用 Buildship 进行 Eclipse IDE,您可以通过打开“Gradle 任务”视图并单击“刷新”图标,或在编辑 Gradle 脚本时从上下文菜单执行 Gradle > 刷新 Gradle 项目 命令来重新同步您的 Gradle 构建。

troubleshooting refresh eclipse
图 5. 在 Eclipse Buildship 中刷新 Gradle 项目

解决守护进程连接问题

如果您的 Gradle 构建在运行任何任务之前失败,您可能遇到了网络配置问题。当 Gradle 无法与 Gradle 守护进程通信时,构建将立即失败并显示类似以下消息:

$ gradle help

Starting a Gradle Daemon, 1 stopped Daemon could not be reused, use --status for details

FAILURE: Build failed with an exception.

* What went wrong:
A new daemon was started but could not be connected to: pid=DaemonInfo{pid=55913, address=[7fb34c82-1907-4c32-afda-888c9b6e2279 port:42751, addresses:[/127.0.0.1]], state=Busy, ...

这可能在使用网络地址转换 (NAT) 伪装时发生。启用 NAT 伪装后,应被视为本地计算机的连接将被伪装成来自外部 IP 地址。作为安全预防措施,Gradle 拒绝连接任何外部 IP 地址。

此问题的解决方案是调整您的网络配置,以便本地连接不会被修改为来自外部地址。

您可以在守护进程日志文件 ($GRADLE_USER_HOME/daemon/<Gradle version>/daemon-<PID>.out.log) 中监视检测到的网络设置和连接请求。

2021-08-12T12:01:50.755+0200 [DEBUG] [org.gradle.internal.remote.internal.inet.InetAddresses] Adding IP addresses for network interface enp0s3
2021-08-12T12:01:50.759+0200 [DEBUG] [org.gradle.internal.remote.internal.inet.InetAddresses] Is this a loopback interface? false
2021-08-12T12:01:50.769+0200 [DEBUG] [org.gradle.internal.remote.internal.inet.InetAddresses] Adding remote address /fe80:0:0:0:85ba:3f3e:1b88:c0e1%enp0s3
2021-08-12T12:01:50.770+0200 [DEBUG] [org.gradle.internal.remote.internal.inet.InetAddresses] Adding remote address /10.0.2.15
2021-08-12T12:01:50.770+0200 [DEBUG] [org.gradle.internal.remote.internal.inet.InetAddresses] Adding IP addresses for network interface lo
2021-08-12T12:01:50.771+0200 [DEBUG] [org.gradle.internal.remote.internal.inet.InetAddresses] Is this a loopback interface? true
2021-08-12T12:01:50.771+0200 [DEBUG] [org.gradle.internal.remote.internal.inet.InetAddresses] Adding loopback address /0:0:0:0:0:0:0:1%lo
2021-08-12T12:01:50.771+0200 [DEBUG] [org.gradle.internal.remote.internal.inet.InetAddresses] Adding loopback address /127.0.0.1
2021-08-12T12:01:50.775+0200 [DEBUG] [org.gradle.internal.remote.internal.inet.TcpIncomingConnector] Listening on [7fb34c82-1907-4c32-afda-888c9b6e2279 port:42751, addresses:[localhost/127.0.0.1]].
...
2021-08-12T12:01:50.797+0200 [INFO] [org.gradle.launcher.daemon.server.DaemonRegistryUpdater] Advertising the daemon address to the clients: [7fb34c82-1907-4c32-afda-888c9b6e2279 port:42751, addresses:[localhost/127.0.0.1]]
...
2021-08-12T12:01:50.923+0200 [ERROR] [org.gradle.internal.remote.internal.inet.TcpIncomingConnector] Cannot accept connection from remote address /10.0.2.15.

获取更多帮助

如果您在此处找不到问题的解决方案,请在帮助论坛上联系 Gradle 社区,或使用help.gradle.org搜索相关的开发人员资源。

如果您认为您在 Gradle 中发现了错误,请在 GitHub 上提交问题