繁体   English   中英

Android Studio 我不断收到 Gradle 错误“该进程无法访问该文件,因为它正被另一个进程使用”

[英]Android Studio I keep getting Gradle error "The process cannot access the file because it is being used by another process"

我可以导入一个示例应用程序项目,尝试构建它,但我一直收到此错误。 不总是同一个文件,而是每次都有一个新的临时文件。 我试过几种不同的样品。 我已经编程 30 多年了,感觉完全一无所知。 唯一的线索似乎是 Windows 任务管理器在给出错误并结束构建时显示 99% 到 100% 的 CPU 使用率。

做这个

File -> Invalidate Caches / Restart.. -> Invalidate/ Restart

当我在 Windows 8 上遇到这种情况时,我打开任务管理器

任务管理器

并简单地杀死“openjdk 平台二进制文件”的所有实例

只需清理项目并运行! 它会工作......

在此处输入图像描述

选择app而不是DefaultPreview 现在,如果您构建,那么您应该不会看到这个问题。

使 IDE 缓存无效是不够的。

  1. 要删除文件夹app\\build我们应该首先停止锁定过程 - OpenJDK 平台二进制文件。
  2. 删除文件夹app\\build
  3. 使缓存无效/重新启动...

上下文:在 Android Instrumented 测试中使用协程。

GL

我有同样的问题。即使我尝试了这里提到的所有解决方案也没有奏效。即使我无法在运行 android studio 管理模式时删除登录文件。我在 IDE 更新 gradle 插件的右下角看到一条通知.所以更新gradle插件通常对我有用在此处输入图片说明

Invalidate Caches / Restart 并非一直有效,关闭整个 Android Studio 并不是一个更好的主意,只是我们无法弄清楚哪个进程正在使用它。

请按照以下步骤确定哪个进程正在使用您的文件。

为此,您可以使用 Windows 7、8 和 10 内置的资源监视器。

  1. 打开资源监视器,可以通过在开始菜单中搜索资源监视器或 resmon.exe 或作为任务管理器中性能选项卡上的按钮找到
  2. 转到 CPU 选项卡
  3. 使用关联句柄部分中的搜索字段

找到句柄后,您可以通过查看图像和/或 PID 列来识别进程。

然后您可以尝试像往常一样关闭应用程序,或者,如果这不可能,只需右键单击句柄并直接从那里终止进程。

参考: https : //superuser.com/questions/117902/find-out-which-process-is-locking-a-file-or-folder-in-windows

终止任务“openjdk 平台二进制文件”对我有用

尝试删除文件(构建器消息中的文件夹)消息将包含进程名称(我不记得名称)在任务管理器中找到进程并停止它

我遇到了同样的问题,就我而言,这是由于多个 Java 运行时(JRE)造成的。 尝试在 android studio 中的 JRE 之间切换或仅使用一个 Java 运行时。

希望它能解决问题。 快乐编码..

在此处输入图片说明

我安装 android studio 时安装了 2 个 jre。 卸载您从控制面板中找到的那个位于 c:\\program files\\java 等位置的文件。

在 android studio 4.0 + 下一次打开时,它将回退到“C:\\Program Files\\Android\\Android Studio\\jre”,并且每次成功构建后的进程锁定都会停止

如果错误反复出现,您可以尝试使用文件泄漏检测器来确定 gradle 进程的哪个部分保存了您的文件。 正如这里所建议的,

  1. 下载文件检漏仪

  2. 与 resmon 检查哪个进程保留文件

  3. 根据文件锁定的位置,执行以下操作:

    • Android Studio:在 Studio 中,转到HelpEdit custom VM options并添加以下行:

       -javaagent:path/to/file-leak-detector.jar=http=19999
    • Gradle:将以下行添加到 gradle.properties 文件中:

       org.gradle.jvmargs=-javaagent:path/to/file-leak-detector.jar=http=19999
  4. 当问题再次出现时,在浏览器中打开localhost:19999并搜索锁定的文件。


就我而言,我发现 AspectJ 编译器/编织器 (ajc) 保存了一个文件:

#115 C:\Users\me\StudioProjects\myapp\app\build\intermediates\compile_and_runtime_not_namespaced_r_class_jar\debug\R.jar by thread:Execution worker for ':' Thread 3 on Mon Oct 19 18:41:06 BST 2020
    at java.util.zip.ZipFile.<init>(ZipFile.java:156)
    ...
    at org.aspectj.tools.ajc.Main$run.call(Unknown Source)

我直接从 Gradle 运行它:

new Main().run(args, handler)

我不知道是否可以让 ajc 发布文件。 所以我通过在单独的进程中运行它来解决我的问题。 我添加了一个新配置来将 aspectjtools 放到类路径上:

val weaving: Configuration by configurations.creating

dependencies {
    weaving("org.aspectj:aspectjtools:1.9.6")
}

而不是上面的代码,我做了:

javaexec {
    classpath = weaving
    main = "org.aspectj.tools.ajc.Main"
    args = arguments
}

使用缓存失效重新启动 Android Studio 无济于事。 正如其他人所说,我们应该删除一个<module>\\build文件夹。 因为文件被OpenJDK Platform binary锁定,我们应该在任务管理器中停止这个过程(或者通过LockHinter解锁文件)。

在此处输入图片说明

在此处输入图片说明

对于那些在 2022 年仍在寻找这个答案的人,请删除build 文件夹并重新构建...

在 Windows 10 上也有同样的情况,通过关闭所有“命令提示符” (cmd)windows ♂️

从任务管理器中终止“OpenJDK 平台二进制文件”,然后删除 src/build,最后重建项目应该可以正常工作。

以上建议的解决方案可能会修复此错误,但它们非常耗时,因此解决此问题的最佳解决方案是打开命令提示符并运行以下命令。

taskkill /im java.exe /f

命令提示符的屏幕截图

在我的例子中,删除 /.gradle/ 目录并重建解决了这个问题。

如果您使用的是外部仿真器:

Android 使用缓存失效重新启动 Studio 没有帮助。

导致问题的文件正在被模拟器使用,如果你像我一样使用外部模拟器(BlueStacks),重新启动 Android Studio 将无济于事。 我重新启动了模拟器,问题就消失了。

项目文件夹中“app/build”目录中的所有文件。 这将修复错误。

我在构建或清理项目时发生了很多次解决方案很简单:

  1. 打开特定目录
  2. 关闭 Android Studio
  3. 删除特定目录
  4. 现在运行 Android Studio

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM