缓存目录被设为只读或存在残留.lock文件、杀软拦截、ide元数据污染,会导致gradle/xcode/pip等工具静默失败;需分别检查目录权限、清除.lock文件、禁用杀软实时防护、清理ide缓存。

缓存目录本身被设为只读(Windows/macOS/Linux 通用)
很多编译工具(如 Gradle、Xcode、pip)的缓存目录一旦被系统或用户误设为只读,后续所有写入操作都会静默失败或卡在“锁定”状态。这不是权限不足的提示,而是进程反复尝试写入却无响应——比如 Gradle 报 Could not lock Java compilation cache,Xcode 在 DerivedData 里卡住不动,pip 在 Cache/ 下新建临时文件失败。
关键动作不是改单个文件,而是检查整个缓存根目录的属性:
- Windows:右键
%LOCALAPPDATA%\pip\Cache或%USERPROFILE%\.gradle\caches→ “属性” → 取消勾选“只读”(注意:勾选框是灰色时,需先取消子文件夹的只读属性再应用) - macOS/Linux:运行
ls -ld ~/.cache/pip/Cache和ls -ld ~/.gradle/caches,若输出含dr-xr-xr-x(无 w 权限),执行chmod u+w ~/.cache/pip/Cache ~/.gradle/caches - 特别注意 macOS 扩展属性:
xattr -l ~/.cache/pip/Cache若输出com.apple.provenance或com.apple.quarantine,用xattr -d com.apple.provenance ~/.cache/pip/Cache清除
缓存内残留 .lock 文件未释放(Gradle / Maven / Bazel 场景)
编译进程崩溃或强制终止后,.lock 文件常被遗留,且不随进程退出自动删除。后续构建会等待锁释放,但实际没人释放它——表现为 CPU 占用低、日志停在 “locking…”、IDEA 或终端无任何错误输出。
直接删比等更可靠:
- Gradle:进
~/.gradle/caches/modules-2/modules-2.lock和~/.gradle/caches/jars-*/jars-*.lock,删掉所有.lock文件(别只删一个) - Maven:检查
~/.m2/repository/.cache/maven-metadata-local*.lock和~/.m2/repository/_remote.repositories.lock - Bazel:
~/Library/Caches/Bazel/<hash>/install.lock</hash>(macOS)或~/.cache/bazel/_bazel_$USER/<hash>/install.lock</hash>(Linux) - 删完立刻验证:
ls -la ~/.gradle/caches | grep lock应为空;否则说明有隐藏锁文件或路径拼写错误
杀毒软件或系统防护拦截缓存写入(Windows 高发)
McAfee、360、腾讯电脑管家等会在 pip 解压 .whl、Gradle 提取 jar、Xcode 写入 ModuleCache 时,把内存映射或 DLL 加载行为识别为可疑,直接 suspend 进程或阻断写入。现象是:CPU 突然归零、任务管理器中 python.exe 或 java.exe 状态变为 “Suspended”,终端卡在 Building wheel for xxx 不动。
必须关实时防护,不是退出软件:
- 临时禁用:右下角杀软图标 → “设置” → 关闭“实时防护”或“主动防御”(保留防火墙即可)
- 验证方式:开 cmd,运行
pip install --verbose dlib 2>&1 | findstr "building",若恢复滚动输出,即确认是杀软拦截 - 加白名单(长期方案):将
%LOCALAPPDATA%\pip\Cache、%USERPROFILE%\.gradle、~/Library/Developer/Xcode/DerivedData加入排除目录
IDE 缓存与项目元数据污染(IntelliJ IDEA / VS Code)
IDE 自身缓存损坏时,会把本该可写的源码目录标记为只读(例如 Java .java 文件顶部显示 This view is read-only),或让构建工具误判缓存路径不可写。这不是操作系统层问题,而是 IDE 读取了错误的元数据。
清缓存必须彻底,不能只点菜单:
- IntelliJ IDEA:关闭 IDE 后,手动删
~/.cache/JetBrains/IntelliJIdea*/caches和~/.config/JetBrains/IntelliJIdea*/options/filetypes.xml(该文件可能硬编码只读规则) - VS Code:删
~/.vscode/extensions/下疑似冲突的扩展缓存,再删工作区根目录下的.vscode/.cache(如有) - 重启前验证:
ls -l project/src/main/java/确认文件权限正常;再打开 IDE,检查File → Project Structure → Modules中 source roots 是否仍被标为 “Excluded”
真正卡住的往往不是某个大文件,而是缓存目录里一个 4 字节的 .lock,或杀软对 Cache/ 子目录里某个临时 .so 的一次毫秒级拦截——这些细节不查日志、不看进程状态,光重装工具没用。











