[英]Process cannot access the file because it is being used by another process [Android] [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
只需清理项目并运行! 它会工作......
使 IDE 缓存无效是不够的。
app\\build
我们应该首先停止锁定过程 - OpenJDK 平台二进制文件。app\\build
上下文:在 Android Instrumented 测试中使用协程。
GL
Invalidate Caches / Restart 并非一直有效,关闭整个 Android Studio 并不是一个更好的主意,只是我们无法弄清楚哪个进程正在使用它。
请按照以下步骤确定哪个进程正在使用您的文件。
为此,您可以使用 Windows 7、8 和 10 内置的资源监视器。
找到句柄后,您可以通过查看图像和/或 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 进程的哪个部分保存了您的文件。 正如这里所建议的,
下载文件检漏仪
与 resmon 检查哪个进程保留文件
根据文件锁定的位置,执行以下操作:
Android Studio:在 Studio 中,转到Help
→ Edit 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
当问题再次出现时,在浏览器中打开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,最后重建项目应该可以正常工作。
在我的例子中,删除 /.gradle/ 目录并重建解决了这个问题。
Android 使用缓存失效重新启动 Studio 没有帮助。
导致问题的文件正在被模拟器使用,如果你像我一样使用外部模拟器(BlueStacks),重新启动 Android Studio 将无济于事。 我重新启动了模拟器,问题就消失了。
项目文件夹中“app/build”目录中的所有文件。 这将修复错误。
我在构建或清理项目时发生了很多次解决方案很简单:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.