错误:任务':app:clean'的执行失败.无法删除文件

Bry*_*ony 152 android kotlin android-studio android-gradle-plugin kotlin-android-extensions

我正在尝试重建我的Android Studio Gradle项目(主要包含Kotlin代码),但它UnableToDeleteFileException在清理/重建过程中开始抛出:

Execution failed for task ':app:clean'.
> Unable to delete file: C:\Users\User\KotlinGameEngine\app\build\intermediates\exploded-aar\com.android.support\appcompat-v7\23.0.1\jars\classes.jar
Run Code Online (Sandbox Code Playgroud)

在我尝试更改项目的包结构后,这种情况开始发生.不幸的是,我是通过重命名和移动源文件夹而不是通过Android Studio重构来实现的,这是一个坏主意.

我一整天都在寻找解决这个问题的方法,这些都是我试过无用的东西:

  • 进行Gradle同步;
  • 重新安装Java JRE和Java SDK;
  • 重新安装最新版本的Android Studio(1.4);
  • 回滚到之前的AS版本(1.3);
  • 使AS缓存无效并重新启动;
  • 删除项目目录中的gradle.gradle目录;
  • 删除.gradle我的用户目录中的目录;
  • gradlew clean从AS终端运行;
  • 手动将源代码复制到一个新项目(奇怪的是它在项目中以某种方式存在......)

我尝试了一些有点成功的事情,但只让我再次执行一次干净并重新构建错误之前:

  • 关闭AS,手动删除构建文件并再次打开它;
  • java.exe在AS运行时杀死进程(这在技术上可以每次都完成,但是它很繁琐并且减慢了构建过程)

所以似乎编译Java进程可能由于某种原因锁定构建文件,但它也可能与Kotlin有关.我有一个(更成熟的)Java Android项目,我正在努力,虽然我在清理时无法重现此错误.这似乎只发生在我的Kotlin项目上.

有任何想法吗?

提前致谢.

更新:

我发现问题是由Kotlin Android插件引起的.当我apply plugin: 'kotlin-android'从模块的build.gradle文件中删除时,问题消失,并在重新插入时返回.随意提供任何洞察力.

更新2:

最后一次更新不是原因.我发现如果一个项目包含一个Kotlin文件,那么重建和清理就会失败.它继续失败,即使所有Kotlin文件都被删除,直到后台Java进程被杀死,这意味着它对构建文件有某种锁定.我在这里提交了一个错误,其中包含更多细节和重现错误的步骤:KT-9440

Irf*_*fan 121

如果您使用的是Android Studio 2.0 Beta,则可能会出现此问题(如果您正在使用NTFS文件系统,则更有可能),并且看起来"即时运行"是罪魁祸首.在设置中搜索"即时运行"并取消选中该框.

我已经在bug跟踪器上提交了一个问题.

  • 这对我有用.如果它可以帮助某人:要在Android Studio 2.1版中禁用"即时运行",即文件 - >设置 - >构建,执行,部署 - >即时运行,然后取消选中第一个框"启用即时运行...". (9认同)
  • 是的,禁用即时运行Studio 2.0 beta 7已解决此异常 (2认同)

小智 99

我杀死了任务管理器中的所有java TM进程,它让我重建

  • +1.Zombie Java进程就是问题所在.如果您使用的是Win 10,请打开任务管理器; 寻找Java(TM)Platform SE二进制文件; 结束任务. (27认同)
  • 您可以使用`gradle --stop`来阻止任何卡住的守护进程作为替代. (21认同)

Clo*_*loy 37

尝试文件 - >使高速缓存无效并重新启动

这对我有用


Bry*_*ony 28

在我向Kotlin bug跟踪器发布了一个错误报告之后,我在AOSP跟踪器上收到了第61300期的通知.这似乎是原因.既然我现在无能为力,我会将这个问题标记为已回答,如果修复了错误,我会更新答案.

与此同时,如果你正在运行Windows,我相信我找到了一个解决方法.您需要下载LockHunter(当然需要您自担风险),然后将以下内容添加到模块的gradle.build文件中,将该lockhunter变量替换为您的LockHunter.exe路径:

task clean(type: Exec) {
    ext.lockhunter = '\"C:\\LockHunter.exe\"'
    def buildDir = file(new File("build"))
    commandLine 'cmd', "$lockhunter", '/delete', '/silent', buildDir
}
Run Code Online (Sandbox Code Playgroud)

这会导致LockHunter在app:clean任务运行时强制并静默地解锁和删除构建文件.


Bis*_*kar 21

使用此命令'gradlew clean'从终端清除项目.

在此输入图像描述

  • `./gradlew clean`并没有为我解决这个问题.它再次显示相同的错误,即"无法删除目录" (5认同)
  • 键入上面的命令开始下载,解压缩和安装,这需要一些时间.在那之后,这个解决方案对我有用. (2认同)

小智 18

我用命令解决了:

taskkill /F /IM java.exe
Run Code Online (Sandbox Code Playgroud)

进而:

gradle assembleDebug 
Run Code Online (Sandbox Code Playgroud)


Dea*_*on1 12

删除目录intermediates是一个快速解决问题的方法.

重建项目时将重建该目录.

  • 我试图删除中间目录,但 Windows 告诉我我无法删除该目录。奇怪的。 (2认同)

Roh*_*wal 6

我在Android Studio 2.2预览版1上遇到了相同的问题,@ AndresSuarez的解决方案是正确的,但是由于某些原因,我在任务管理器中找不到JAVA TM进程。所以我尝试了以下解决方案,它奏效了-

打开命令提示符,然后键入TASKKILL /F /IM java.exe。这将自动杀死所有JAVA TM进程。现在再次重新编译该应用程序,它将可以正常工作。

此外,您可以创建一个.bat文件,在其中添加上面的代码,并在每次遇到问题时运行它。


M. *_*shi 6

我遇到了同样的问题,这对我有用:

  1. 关闭 Android Studio。
  2. 删除intermediates目录(只要Android Studio打开,该目录就不能删除)
  3. 再次打开Android Studio


Joh*_*und 5

我在Android Studio 2.3中遇到此问题。

我只是重新启动了Android Studio,然后我可以进行清理而不会产生任何投诉。


Dmi*_*nov 5

对我来说,这是因为一个活跃的调试过程。因此,在清理或重建之前,请确保终止所有活动进程。要确定成功,请执行Invalidate Caches/Restart