它当前正被另一个 Gradle 实例使用

Posted

技术标签:

【中文标题】它当前正被另一个 Gradle 实例使用【英文标题】:It is currently in use by another Gradle instance 【发布时间】:2014-02-26 17:04:59 【问题描述】:

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

当我开始运行简单任务时,它已成功构建。但是,一段时间后,它显示"It is currently in use by another Gradle instance" 并变为BUILD FAILED。我正在使用终端来运行任务。那个时候我什么都没跑。

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

为什么这个错误经常出现?

如何解决?

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

【问题讨论】:

你是否在守护进程模式中使用过gradle?您可以通过运行命令gradle --stop 进行检查。您会期望得到输出 No Gradle daemons are runningGradle daemon stopped @topr 我没有使用守护进程模式.. 解决方案:(这对我有用) 步骤 1. 启动任务管理器查找/验证没有两个 java.exe 实例正在运行。第 2 步。只需杀死任何一个 java.exe 或两者并再次启动 Android Studio。享受 【参考方案1】:

通过执行以下操作删除 gradle 缓存中的锁定文件:

find ~/.gradle -type f -name "*.lock" -delete

【讨论】:

谢谢!在我另外运行 find /path-to-project-dir/.gradle -type f -name "*.lock" | while read f; do rm $f; done 之后它起作用了 今天我又回到了这个问题,这次我需要kill -9一个进程,除了删除锁文件。问题标题中的消息紧随其后的是 PID:出了什么问题:超时等待锁定任务历史缓存 (,,,)。它当前正被另一个 Gradle 实例使用。所有者 PID:4354 我们的 PID:9500 @JoshuaGoldberg 在杀死进程#4354 之前,您是否检查过它是如何以及何时启动的? (我只是好奇。) 感谢分享该命令,在删除 gradle 的锁定文件之前和之后,我从未遇到过这个问题,我能够再次运行我的服务器。这应该被标记为“最佳答案” @shashank-chandak 在 bash shell(终端或 Cygwin)中【参考方案2】:

有时快速的方式是不优雅的交易,我们去吧:

首先找到所有正在运行的 gradle 进程的#

ps -A | grep gradle

之后,拿到ID,一个一个杀了他们

sudo kill -9 <process ID>

现在你很好;-)

【讨论】:

也可以gradle --stop【参考方案3】:

我遇到了这个错误,不得不删除用户的 .gradle/caches/ 文件夹的内容和我的项目的 .gradle/ 文件夹的内容才能重新开始。

不确定是什么原因造成的,可能是构建失败导致这些文件处于锁定状态?

【讨论】:

这里指出这个问题 -- issues.gradle.org/browse/GRADLE-2795 -- 虽然gradle bug存在,但我认为这是最好的解决方案。 其实我只是删除 ~/.gradle/caches/* 而不触及项目的 .gradle 目录就成功了。 你很幸运@JoshuaGoldberg,但就我而言,我什至无法删除 chaches 文件夹。可能是什么问题? 我删除了 .gradle/caches/** ,它又可以工作了。奇怪的是我只使用 ./gradlew 不应该使用本地 gradle 版本吗? @BenGroot AFAIK 所有具有相同 gradle 版本的 gradle 守护进程共享相同的缓存(如果没有明确强制),无论它们从哪里开始。【参考方案4】:

对于 Windows 机器:

打开任务管理器(Ctrl-Alt-Delete 并检查进程)

-> 如果你运行两个 android studio 实例,关闭一个(结束任务)

-> 然后关闭 OpenJDK Platform Binary

-> AndroidStudio 上的 Gradle 同步功能现在可以使用了

【讨论】:

这对我有用。但就我而言,我打开了两个 JDK 实例和一个 Android Studio。【参考方案5】:
gradlew --stop

我遇到了类似的错误,运行上述命令对我有用。

【讨论】:

【参考方案6】:

这可能是因为有不止一次的 Android Studio 实例。

【讨论】:

同意,打开多窗口android studio同时同步也会导致这个问题 @贾斯汀很好发现【参考方案7】:

只需杀死 java.exe 进程解决我的问题。

-- 编辑--

如果不固定则:

杀死 OpenJdkPlatform 进程。

如果不固定则:

从 .gradle 目录中删除所有“.lock”文件和子目录(windows:C:\Users\Username\.gradle)。

如果不固定则:

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

【讨论】:

阅读您的回答后,我删除了 .gradle 目录,现在重新编译应用程序后完全损坏。 阅读您的答案后,我删除了 .gradle 目录,现在重新编译应用程序后完全损坏。字体大小增加,填充增加,出现随机验证错误。我现在能做什么? 你确定只删除 .gradle 目录吗? remove .gradle must 对您的应用代码没有任何副作用。它只是 gradle 缓存,如果你再次编译你的应用程序。 gradle 将下载必要的文件。尝试干净的构建。【参考方案8】:

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

【讨论】:

我得到了所有者 PID:未知。怎么找到?【参考方案9】:

对于 MAC 机器

请打开“活动监视器”并选择“内存”选项并强制关闭Android studio和其他正在运行的java进程,它会解决这个问题。

【讨论】:

在 Mac 上使用 IntelliJ 运行时对我有用 这对 AppCode 也很重要(我在看你 Kotlin Multiplatform 项目)【参考方案10】:

我在我的项目中遇到了同样的问题,但我通过使项目无效解决了这个问题,所以请在 android studio 中按照这些步骤操作

File -&gt; Invalidate Caches / Restart...

Android Studio 将重新启动,您的问题应该会得到解决。

【讨论】:

也适用于带有普通 java 项目的 IntelliJ! 也为我工作,谢谢。【参考方案11】:

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

执行以下步骤。

    执行ps -ef | grep gradle 打开终端并移动到 ~/.gradle/caches 路径 执行find ~/.gradle -type f -name "*.lock" | while read f; do rm $f; done 从 Android Studio 中删除 .gradle.idea 文件夹。

完成了。

【讨论】:

【参考方案12】:

在 Mac 上遇到同样的问题,以上方法都不适合我。但是,有效的是打开活动监视器并关闭正在运行的 java 进程。我还注意到生成了一个 .hprof 文件,我将其删除。之后,我运行了我的项目,它成功了。

【讨论】:

【参考方案13】:

我在 mac 上遇到了同样的问题:

请注意,您的项目不在外部硬盘上。您的项目的位置必须在您的操作系统所在的硬盘上。

(构建 Ionic 应用程序)

【讨论】:

似乎在我的情况下,问题也是如此。前几天我将项目转移到了外部驱动器。 这也为我解决了这个问题。在 Windows 上。【参考方案14】:

对于 Windows 操作系统:

我认为它与锁定文件有关,所以我只需转到项目文件夹中的 .gradle\buildOutputCleanup 并删除 cache.properties.lock 文件并重建项目。它运行良好。

【讨论】:

【参考方案15】:

CTRL + SHIFT + ESC打开任务管理器现在找到OpenJDK并杀死它转到错误指向的地方

D:\.gradle\daemon\4.10.1\registry.bin.lock

删除文件并重新同步,一切顺利。

【讨论】:

【参考方案16】:

我也被同样的事情困住了。不过很快就整理好了。只需删除文件:

D:\.gradle\daemon\6.1.1\registry.bin.lock

另外,我已经从任务管理器中结束了 OpenJDK。不管它有没有帮助,但他们都解决了这个问题。

【讨论】:

【参考方案17】:

有时您需要在每次构建错误后运行此代码几次

对我来说,首先需要两次我得到锁定错误我运行此代码然后再次我得到另一个文件的锁定错误所以我再次运行代码并最终正常工作。

find ~/.gradle -type f -name "*.lock" -delete

【讨论】:

【参考方案18】:

我没有必要删除任何文件来修复此错误。

我遇到的问题是 Gradle 实例已挂起,并且是我的任务列表中由 Java 生成的 6 个命令提示符条目。

强制关闭命令提示符实例让我可以像往常一样继续工作。

【讨论】:

【参考方案19】:

它为我工作 问题:-

"Error:Timeout waiting to lock jars 它当前正被另一个 Gradle 实例使用。Owner PID: 6896 Our PID: 5048 Owner Operation: Our operation: Lock"

解决方案:-

    关闭Android Studio并打开任务管理器并结束进程java.exe 打开目录 ....gradle\caches。 删除 jar2.lock 文件。 打开 android Studion 并清理项目。

【讨论】:

【参考方案20】:

已经尝试了所有这些答案,包括杀死 java 进程,删除 HOME_DIR 和项目目录中的 .gradle,重新启动 Android Studio,甚至重新启动操作系统。

在我启动 gradle sync 后它才开始正常工作。

【讨论】:

【参考方案21】:

非常简单的解决方案:

无需杀死Android Studio,只需杀死OpenJdkPlatform进程, 然后删除位于以下位置的.lock 文件:

rootProject/.gradle/<version>/taskHistory

【讨论】:

【参考方案22】:

虽然终止进程和/或删除锁定文件有效,但 Gradle 应该能够自行处理,永久解决问题。 This problem report 提示解决方法:Gradle 无法与 gradle 服务通信。

查看您的本地网络防火墙。就我而言,

允许从 127.0.0.1 到 127.0.0.1 的出站流量,

sudo iptables -A OUTPUT -p udp -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT

允许来自 127.0.0.1 的传入流量

sudo iptables -A INPUT -s 127.0.0.1 -p udp -j ACCEPT

解决了这个问题。类似问题的讨论at github。

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

udacity gradle course,如果你有时间的话。

【讨论】:

【参考方案23】:

打开终端并移动到项目路径,然后根据操作系统运行: gradlew clean 或 ./gradlew clean

【讨论】:

【参考方案24】:

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

    我的 JDK 没有安装在 Mac 上(我忘了安装)我安装了它。 我从位于此路径 /Users/icon_developer/.gradle/ 的缓存文件夹中删除了所有项目并重建了项目。 成功了!

【讨论】:

【参考方案25】:

对于 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

【讨论】:

【参考方案26】:

对于第一次 Gradle 同步的 Mac 用户

我在使用 IntelliJ 从 GitLab 克隆时遇到了同样的问题。 事实上,正如这里提到的:https://***.com/a/53269914/2231299 您需要指定一个内部硬盘。

以下是我案例中的步骤:

• 本地克隆

• 等待第一次 gradle 同步执行

• 将目录移动到外部硬盘

• 在新位置重新打开项目,然后 gradle 应该可以正常工作,即使在外部硬盘上也是如此。

评论: 如果文件看起来有一些更改,请不要害怕重新提交。这可能只是缩进或换行问题,因为您的外部磁盘可能与原始 Mac 磁盘的格式不同。

【讨论】:

【参考方案27】:

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

根据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 server 保持锁,并在其他 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

【讨论】:

【参考方案28】:

对于 Mac 用户:

你需要给gradle权限:

sudo gradle

【讨论】:

【参考方案29】:

除了这里的最佳答案,您还需要弄清楚为什么 gradle 进程退出而不释放锁以永久修复它。

就我而言,我做了所有 *.lock 文件删除和 Android Studio 的 Invalidate Cache 选项。但问题不断出现。

在终端中手动运行 gradlew 显示当 JVM 堆空间耗尽时,gradle 进程过早退出。这个answer 帮助修复了它。

./gradlew build #to detect what crashes gradle processes
./gradlew --stop #to stop any running gradle processes

修复问题后(例如:堆耗尽)

find .gradle/ -type f -name "*.lock" -delete #delete lock files
./gradlew build #Try building the project

【讨论】:

【参考方案30】:

大家终于, 我有完整的解决方案

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

【讨论】:

以上是关于它当前正被另一个 Gradle 实例使用的主要内容,如果未能解决你的问题,请参考以下文章

进程无法访问该文件,因为它正被另一个进程使用 [Android] [Gradle]

编译应用程序时出错

该进程无法访问该文件,因为它正被另一个进程 Streamwriter 使用

dotnet publish 错误:该进程无法访问该文件,因为它正被另一个进程使用

System.IO.IOException: '该进程无法访问该文件,因为它正被另一个进程使用

IOException:该进程无法访问该文件,因为它正被另一个进程使用