【发布时间】:2010-08-13 07:54:29
【问题描述】:
我正在编写一个 Maven 插件,它使用 File.delete() 和 File.renameTo(File) JDK 方法删除和重命名各种文件。
大约每两次我运行插件时,其中一个操作都会失败,每次失败时,它都是一个无法删除或重命名的不同文件。为什么无法删除文件的一个明显解释是另一个进程正在使用它(我在 Windows 上运行),但我不知道哪个进程可能负责。无法始终如一地重现该问题的事实表明存在线程问题,但是 AFAIK,Maven 插件在单个线程中运行。很难获得有关问题原因的任何信息,因为上面提到的方法不会抛出异常,它们只是返回 false。
有没有办法以编程方式检测锁定的文件和持有锁定的进程的名称?或者,如果有人对如何调试此类问题有其他建议,请发送给他们。
谢谢, 唐
【问题讨论】:
-
很难说没有看到任何代码。黑暗中的几个刺:当您打开 Windows 的文件资源管理器并查看有问题的文件时,您可能无法删除它,因为资源管理器正在锁定该文件。您确定要关闭 IO 流吗?没有吞下可能提供失败原因线索的异常?
标签: java debugging maven-2 maven-plugin io