Netbeans使用CN1构建CodeNameOne项目失败无法删除文件报错
构建报错日志如下:
Created dir: C:\Users\ruben\Documents\ProyectosCodenameOne\Tempus\build Updating property file: C:\Users\ruben\Documents\ProyectosCodenameOne\Tempus\build\built-clean.properties Deleting directory C:\Users\ruben\Documents\ProyectosCodenameOne\Tempus\build C:\Users\ruben\Documents\ProyectosCodenameOne\Tempus\nbproject\build-impl.xml:1387: Unable to delete file C:\Users\ruben\Documents\ProyectosCodenameOne\Tempus\dist\README.TXT BUILD FAILED (total time: 0 seconds)
问题原因
- 核心原因是dist目录下的README.TXT文件被其他进程锁定占用,Ant构建脚本执行clean任务时无法删除被占用的文件,直接触发构建失败:
- 常见占用场景:手动打开了该README.TXT未关闭、资源管理器预览窗口正在加载该文件内容、杀毒软件正在扫描dist目录、上次构建异常中断后残留的CodeNameOne构建进程还持有文件句柄
- 少数情况为Windows权限问题,当前登录用户对dist目录没有修改/删除权限
解决方法
临时快速修复
- 关闭所有可能占用该文件的程序:包括打开的文本编辑器、资源管理器中打开的dist目录页面,再重新执行构建即可
- 如仍报错,重启Netbeans后再次构建,可解决绝大多数临时进程占用问题
永久解决方案
- 若手动删除dist目录时系统提示文件被占用,可通过系统资源监视器定位占用进程:
- 按下
Win+R输入resmon.exe打开资源监视器 - 切换到「CPU」标签,在「关联的句柄」搜索框输入该README.TXT的完整路径,即可看到持有文件锁的进程,右键结束对应进程后即可正常删除文件
- 按下
- 若为权限问题,右键点击dist目录,选择「属性」-「安全」,给当前Windows用户添加「完全控制」权限
- 本地开发场景可修改Ant构建配置避免单个文件删除失败中断构建:找到
build-impl.xml第1387行对应的delete任务,添加failonerror="false"属性,修改为<delete failonerror="false" ...>即可,正式打包环境不建议开启该配置。
内容的提问来源于stack exchange,提问作者Rubén Villarreal
相关产品推荐
相关产品推荐

