我是Gradle构建系统的新手。我想做一些基本的功能。我在命令行中运行/构建它。我指的是User guide。而且,做一些简单的任务。
当我开始运行简单任务时,它已成功构建。但是,有些时候,它会显示"It is currently in use by another Gradle instance"
并变为BUILD FAILED
。我正在使用终端来运行任务。那时我没有跑任何东西。
如果我关闭了产生错误的终端,这个问题就解决了。但是,我知道这不是解决方案。
为什么这个错误频繁发生?
如何解决?
并且,请参阅任何链接以提高我对Android中Gradle Build系统的了解。
答案 0 :(得分:151)
通过执行以下操作删除gradle缓存中的锁定文件:
find ~/.gradle -type f -name "*.lock" -delete
答案 1 :(得分:26)
我遇到了这个错误,不得不吹掉我用户的.gradle/caches/
文件夹的内容以及我项目的.gradle/
文件夹的内容,以便重新开始。
不确定导致它的原因,可能是使这些文件保持锁定状态的失败构建?
答案 2 :(得分:4)
可能会发生这种情况,因为Android Studio不仅仅有一次实例。
答案 3 :(得分:3)
该Gradle失败消息通常后跟相关的进程ID,因此应该是
Gradle sync failed: Timeout waiting to lock daemon addresses registry [...].
It is currently in use by another Gradle instance.
Owner PID: 1234
Our PID: 5678
Owner Operation: ...
要解锁,只需杀死所有者进程:
sudo kill -9 1234
答案 4 :(得分:3)
gradlew --stop
我遇到了类似的错误,运行上述命令对我有用。
答案 5 :(得分:2)
对于Windows机器:
打开任务管理器(Ctrl-Alt-Delete并检查处理)
- >如果你运行两个android studio实例,Close One(结束任务)
- >然后关闭OpenJDK Platform Binary
- >现在可以在AndroidStudio上同步Gradle,它现在可以正常工作
答案 6 :(得分:2)
我可能会迟到,但看起来像是快速有效的解决方案。
执行以下步骤。
ps -ef | grep gradle
find ~/.gradle -type f -name "*.lock" | while read f; do rm $f; done
完成了。
答案 7 :(得分:1)
只需杀死java.exe进程修复我的问题。
- 编辑 -
如果没有修复那么:
如果没有修复那么:
如果没有修复那么:
答案 8 :(得分:1)
我在我的项目中遇到了同样的问题,但是我通过使项目无效来解决了这个问题,因此请在android studio File -> Invalidate Caches / Restart ... 中执行以下步骤
答案 9 :(得分:0)
就我而言,罪魁祸首是限制性防火墙,它是防病毒系统的一部分。
根据https://discuss.gradle.org/t/timeout-waiting-to-lock-file-hash-cache/21961/2和https://github.com/elastic/elasticsearch/issues/50954#issuecomment-576772154,gradle-issue-8750,gradle服务器保持锁并在其他gradle进程请求时释放它。通信通过本地主机上的 UDP 套接字进行。因此,如果有防火墙阻止此通信,gradle 会保持文件锁定,其他 gradle 进程将无法继续。
尝试禁用 AV/防火墙以查看问题是否消失。然后按如下方式运行 gradle 以更好地了解正在发生的事情。
gradle --debug --no-daemon
调试日志显示锁的所有者,如果问题仍然存在,杀死锁的所有者。
2021-05-20T19:32:41.105+0200 [DEBUG] [org.gradle.cache.internal.DefaultFileLockManager] The file lock is held by a different Gradle process (pid: 67494, lockId: 628651820260732672). Pinged owner at port 58442
2021-05-20T19:32:42.330+0200 [DEBUG] [org.gradle.cache.internal.DefaultFileLockManager] The file lock is held by a different Gradle process (pid: 67494, lockId: 628651820260732672). Pinged owner at port 58442
然后 kill -9 67494
终止所有者并释放锁。
否则过一段时间 gradle 会因错误而终止(在此说明以便于查找):
* What went wrong:
Gradle could not start your build.
> Could not create service of type ResourceSnapshotterCacheService using GradleUserHomeServices.createResourceSnapshotterCacheService().
> Timeout waiting to lock file hash cache (/Users/myusername/.gradle/caches/6.9/fileHashes). It is currently in use by another Gradle instance.
Owner PID: 67494
Our PID: 68313
Owner Operation:
Our operation:
Lock file: /Users/myusername/.gradle/caches/6.9/fileHashes/fileHashes.lock
答案 10 :(得分:0)
对于首次同步 Gradle 的 Mac 用户
我在使用 IntelliJ 从 GitLab 克隆时遇到了同样的问题。 事实上,正如这里提到的:https://stackoverflow.com/a/53269914/2231299 您需要指定一个内置硬盘。
这里是我的案例中的步骤:
• 在本地克隆
• 等待第一个 gradle 同步执行
• 将目录移动到外部硬盘
• 在新位置重新打开项目,然后 gradle 应该可以正常工作,即使在外部硬盘上也是如此。
评论: 如果文件看起来有一些更改,请不要害怕重新提交。这可能只是缩进或换行问题,因为您的外部磁盘可能与原始 mac 磁盘的格式不同。
答案 11 :(得分:0)
对于 Windows 用户:
Gradle 失败消息通常后跟相关的进程 ID,所以它会是 Gradle 同步失败:超时等待锁定守护进程地址注册表 [...]。 它当前正被另一个 Gradle 实例使用。
Owner PID: 8080
Our PID: 89765
Owner Operation: ...
In order to unlock, just kill the owner process:
taskkill /PID 8080 /F
taskkill /PID 89765 /F
答案 12 :(得分:0)
对于MAC计算机
请打开“活动监视器”并选择“内存”选项,并强制使Android Studio和其他正在运行的Java进程安静,这将解决此问题。
答案 13 :(得分:0)
对我来说,在Mac上,顶部选择File
,然后选择Invalidate Caches / Restart...
完成操作。
一个不错的简单解决方案,如果它也对您有用!
答案 14 :(得分:0)
要在Windows中解决此问题
答案 15 :(得分:0)
就我而言,只是关闭Android Studio并重新打开它,问题就解决了。
答案 16 :(得分:0)
我太坚持同一件事了。但是很快就整理好了。只需删除文件即可:
D:\.gradle\daemon\6.1.1\registry.bin.lock
另外,我已经从任务管理器中结束了OpenJDK。知道它有没有帮助,但是他们两个都解决了这个问题。
答案 17 :(得分:0)
在Mac上也有同样的问题,以上都不适合我。但是,有效的方法是打开活动监视器并关闭正在运行的Java进程。我还注意到生成了一个.hprof文件,该文件已删除。在那之后,我运行了我的项目,它成功了。
答案 18 :(得分:0)
有时快速的交易方式很不优雅,我们去了:
首先找到正在运行的所有gradle进程的数量
ps -A | grep gradle
之后,获取ID,一一杀死所有
sudo kill -9 <process ID>
现在你很好;-)
答案 19 :(得分:0)
按CTRL + SHIFT + ESC
打开任务管理器,现在找到OpenJDK
并将其杀死,将其转到错误所指向的位置
D:\.gradle\daemon\4.10.1\registry.bin.lock
删除文件并重新同步,就可以了。
答案 20 :(得分:0)
我在Mac上遇到了相同的问题:
请注意,您的项目不在外部硬盘上。项目的位置必须在操作系统的硬盘上。
(构建离子应用)
答案 21 :(得分:0)
我遇到了同样的问题,我做了两个步骤,问题就解决了。
答案 22 :(得分:0)
我面临着同样的问题。但是我通过重新启动android studio解决了它。我正在使用OneDrive保存我的项目。
答案 23 :(得分:0)
打开终端并移动到项目路径然后根据操作系统运行: gradlew clean或./gradlew clean
答案 24 :(得分:0)
对于Windows操作系统:
我认为这与锁定文件有关,所以我只是去项目文件夹中的.gradle \ buildOutputCleanup并删除了cache.properties.lock文件并重建了项目。它运作得很好。
答案 25 :(得分:0)
在终止进程和/或删除锁定文件时,Gradle应该能够自行处理,永久解决问题。 This problem report提示解决方案:Gradle无法与gradle服务进行通信。
查看本地网络防火墙。就我而言,
允许从127.0.0.1到127.0.0.1的出站流量
case class FooBar(id: Int, foos: Seq[Int])
Seq[(Integer, Integer)]((1, null))
.toDF.select($"_1" as "id", array($"_2") as "foos")
.as[FooBar]
允许来自127.0.0.1的传入流量
sudo iptables -A OUTPUT -p udp -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT
解决了这个问题。讨论类似问题at github。
并且,请参阅任何链接以提高我对Android中Gradle Build系统的了解。
udacity gradle course,如果你有时间的话。
答案 26 :(得分:0)
非常简单的解决方案:
无需杀死Android Studio
,只需杀死OpenJdkPlatform
进程,
然后删除位于以下位置的.lock
文件:
rootProject/.gradle/<version>/taskHistory
答案 27 :(得分:0)
尝试了所有这些答案,包括杀死java进程,删除HOME_DIR和项目目录中的.gradle,重新启动Android Studio,甚至重新启动操作系统。
只有在我启动了gradle sync后才开始正常工作。
答案 28 :(得分:0)
它为我工作 问题: -
“错误:等待锁定jar的超时它正在被另一个Gradle实例使用。所有者PID:6896我们的PID:5048所有者操作:我们的操作:锁定”
解决方案: -
答案 29 :(得分:0)
我没有必要删除任何文件来修复此错误。
我遇到的问题是Gradle实例已挂起,并且在我的任务列表中有6个命令提示条目由Java生成。
强制命令提示符实例关闭允许我继续照常工作。
答案 30 :(得分:-1)
Error :- Timeout Gradle cashe its running in other gradle
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-4.6-all.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
Please add this Line in Wrapper.Propertis and Sync now
After Sync the project When
Invalidthcast\restart to get the requesting componants
答案 31 :(得分:-1)
在@Sean Stayns 的回答中引用一个场景,以防它对任何人有帮助:如果您将项目保存在 Google Drive 文件夹中 - 不要。只需将项目移至本地驱动器即可解决此问题。
在我们尝试解决的情况下,也遇到了“它当前正被另一个 Gradle 实例使用”错误,但我们在这里尝试的任何方法都没有奏效。进程 ID 也是未知的。我没有立即想到要询问项目的保存位置,因此如果 Android 开发新手将他们的项目保存到 Google Drive 文件夹,只需移至您的本地驱动器即可。我会在@Sean Stayns 的回答中留下这个作为评论,但我无法发表评论。希望它有益于某人。