运行Android项目时.gradle文件夹未创建且Gradle守护进程启动失败(地址已被占用)技术求助
解决Gradle守护进程启动失败(端口占用)及.gradle文件夹未创建问题
问题描述
运行Android项目时,.gradle文件夹未自动创建,同时构建失败,核心错误提示为:
FAILURE: Build failed with an exception. 出错原因:java.net.BindException: Address already in use: Cannot bind
完整错误堆栈信息如下:
org.gradle.api.UncheckedIOException: java.net.BindException: Address already in use: Cannot bind at org.gradle.internal.UncheckedException.throwAsUncheckedException(UncheckedException.java:61) at org.gradle.internal.UncheckedException.throwAsUncheckedException(UncheckedException.java:41) at org.gradle.cache.internal.locklistener.FileLockCommunicator.<init>(FileLockCommunicator.java:51) at org.gradle.cache.internal.locklistener.DefaultFileLockContentionHandler.getCommunicator(DefaultFileLockContentionHandler.java:263) at org.gradle.cache.internal.locklistener.DefaultFileLockContentionHandler.reservePort(DefaultFileLockContentionHandler.java:255) at org.gradle.cache.internal.DefaultFileLockManager.lock(DefaultFileLockManager.java:108) at org.gradle.cache.internal.DefaultFileLockManager.lock(DefaultFileLockManager.java:95) at org.gradle.cache.internal.DefaultFileLockManager.lock(DefaultFileLockManager.java:90) at org.gradle.cache.internal.OnDemandFileAccess.updateFile(OnDemandFileAccess.java:51) at org.gradle.cache.internal.SimpleStateCache.update(SimpleStateCache.java:87) at org.gradle.cache.internal.FileIntegrityViolationSuppressingPersistentStateCacheDecorator$1.create(FileIntegrityViolationSuppressingPersistentStateCacheDecorator.java:50) at org.gradle.cache.internal.FileIntegrityViolationSuppressingPersistentStateCacheDecorator.doUpdate(FileIntegrityViolationSuppressingPersistentStateCacheDecorator.java:67) at org.gradle.cache.internal.FileIntegrityViolationSuppressingPersistentStateCacheDecorator.update(FileIntegrityViolationSuppressingPersistentStateCacheDecorator.java:47) at org.gradle.launcher.daemon.registry.PersistentDaemonRegistry.store(PersistentDaemonRegistry.java:232) at org.gradle.launcher.daemon.server.DaemonRegistryUpdater.onStart(DaemonRegistryUpdater.java:80) at org.gradle.launcher.daemon.server.Daemon.start(Daemon.java:171) at org.gradle.launcher.daemon.bootstrap.DaemonMain.doAction(DaemonMain.java:125) at org.gradle.launcher.bootstrap.EntryPoint.run(EntryPoint.java:50) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.gradle.launcher.bootstrap.ProcessBootstrap.runNoExit(ProcessBootstrap.java:60) at org.gradle.launcher.bootstrap.ProcessBootstrap.run(ProcessBootstrap.java:37) at org.gradle.launcher.daemon.bootstrap.GradleDaemon.main(GradleDaemon.java:22) Caused by: java.net.BindException: Address already in use: Cannot bind at java.net.DualStackPlainDatagramSocketImpl.socketBind(Native Method) at java.net.DualStackPlainDatagramSocketImpl.bind0(DualStackPlainDatagramSocketImpl.java:84) at java.net.AbstractPlainDatagramSocketImpl.bind(AbstractPlainDatagramSocketImpl.java:93) at java.net.DatagramSocket.bind(DatagramSocket.java:392) at java.net.DatagramSocket.<init>(DatagramSocket.java:242) at java.net.DatagramSocket.<init>(DatagramSocket.java:299) at org.gradle.cache.internal.locklistener.FileLockCommunicator.<init>(FileLockCommunicator.java:49) ... 22 more
问题根源
.gradle文件夹未创建是因为Gradle守护进程从未成功启动——这个文件夹是Gradle首次正常运行后才会自动生成的。而守护进程启动失败的核心原因是它需要绑定的端口被其他进程占用。
解决方案
按以下步骤尝试,从简单到复杂:
1. 快速释放端口:杀掉占用进程或重启电脑
- Windows系统操作:
- 打开命令提示符,执行
taskkill /F /IM java.exe(直接杀掉所有Java进程,Gradle守护进程基于Java运行);如果担心误杀其他Java程序,也可以用netstat -ano查找占用Gradle常用端口的进程ID,再用taskkill /F /PID <进程ID>单独终止。 - 嫌麻烦的话直接重启电脑,所有占用的端口会被自动释放,这是最省心的方式。
- 打开命令提示符,执行
2. 清理Gradle缓存与守护进程状态
- 若
.gradle文件夹还未生成,手动进入用户目录(比如C:\Users\你的用户名),新建名为.gradle的空文件夹。 - 若已有
.gradle文件夹,删除其中的daemon、caches、wrapper三个子目录——这些目录存储了守护进程状态、构建缓存和下载的Gradle包,删除后会重新生成干净的文件。 - 重启Android Studio,点击工具栏的
Sync Project with Gradle Files按钮重新同步项目。
3. 手动指定Gradle守护进程端口
如果端口占用问题反复出现,可以手动指定一个未被占用的端口:
- 在项目根目录的
gradle.properties文件中添加以下配置:
这里的org.gradle.daemon.port=5005150051可以换成任意未被占用的端口号,保存后重新同步项目即可。
4. 检查JDK配置兼容性
Gradle 6.7对JDK版本有要求(推荐JDK 8或11),确保Android Studio使用的JDK符合要求:
- 打开Android Studio,依次点击
File > Project Structure > SDK Location,查看JDK Location是否指向兼容的JDK路径(推荐使用Android Studio自带的JDK)。
内容的提问来源于stack exchange,提问作者d.code
相关产品推荐
相关产品推荐

