它目前正由另一个Gradle实例使用

时间:2014-02-03 09:21:10

标签: gradle android-gradle

我是Gradle构建系统的新手。我想做一些基本的功能。我在命令行中运行/构建它。我指的是User guide。而且,做一些简单的任务。

当我开始运行简单任务时,它已成功构建。但是,有些时候,它会显示"It is currently in use by another Gradle instance"并变为BUILD FAILED。我正在使用终端来运行任务。那时我没有跑任何东西。

如果我关闭了产生错误的终端,这个问题就解决了。但是,我知道这不是解决方案。

为什么这个错误频繁发生?

如何解决?

并且,请参阅任何链接以提高我对Android中Gradle Build系统的了解。

32 个答案:

答案 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)

我可能会迟到,但看起来像是快速有效的解决方案。

执行以下步骤。

  1. 执行ps -ef | grep gradle
  2. 打开终端并移至〜/ .gradle / caches 路径
  3. 执行find ~/.gradle -type f -name "*.lock" | while read f; do rm $f; done

完成了。

答案 7 :(得分:1)

只需杀死java.exe进程修复我的问题。

- 编辑 -

如果没有修复那么:

  • 杀死OpenJdkPlatform进程。

如果没有修复那么:

  • 删除所有" .lock" .gradle目录下的文件和子目录(windows:C:\ Users \ Username \ .gradle)。

如果没有修复那么:

  • 重命名或删除.gradle目录,然后重试。

答案 8 :(得分:1)

我在我的项目中遇到了同样的问题,但是我通过使项目无效来解决了这个问题,因此请在android studio File -> Invalidate Caches / Restart ... 中执行以下步骤

答案 9 :(得分:0)

就我而言,罪魁祸首是限制性防火墙,它是防病毒系统的一部分。

根据https://discuss.gradle.org/t/timeout-waiting-to-lock-file-hash-cache/21961/2https://github.com/elastic/elasticsearch/issues/50954#issuecomment-576772154gradle-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中解决此问题

  1. 转到任务管理器
  2. 在任务管理器的“详细信息”中找到所有者PID
  3. 结束任务

答案 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)

我遇到了同样的问题,我做了两个步骤,问题就解决了。

  1. 我的JDK尚未安装在Mac上(我忘记安装了)。
  2. 我从/Users/icon_developer/.gradle/路径中的缓存文件夹中删除了所有项目,并重建了项目。 奏效了!

答案 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所有者操作:我们的操作:锁定”

解决方案: -

  1. 关闭Android Studio和Open Task manager并结束进程java.exe
  2. 打开derectory .... gradle \ caches。
  3. 删除jar2.lock文件。
  4. 打开android Studion并清理项目。

答案 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 的回答中留下这个作为评论,但我无法发表评论。希望它有益于某人。