我已经使用JGit API创建了本地存储库。当所有的处理完成后,我想删除本地回购(这是一个简单的java.io.File)。但File.delete()操作失败。我已致电干净关机JGit
org.eclipse.jgit.api.Git.close()
org.eclipse.jgit.lib.Repository.close()
是否需要进一步清理?我跑进
我已经使用JGit API创建了本地存储库。当所有的处理完成后,我想删除本地回购(这是一个简单的java.io.File)。但File.delete()操作失败。我已致电干净关机JGit
org.eclipse.jgit.api.Git.close()
org.eclipse.jgit.lib.Repository.close()
是否需要进一步清理?我跑进
的一件事是,如果你使用Git.cloneRepository()()调用,您需要关闭返回的结果,即
Git result = Git.cloneRepository()
....
.call();
try {
...
} finally {
result.close();
}
this code snippet
此外,JGit中可能使文件句柄打开的某些位置在JGit 3.5.1之后的某个点处得到修复,请参阅this bug,因此如果您仍在使用JGit,可能还有助于确保使用最新版本的JGit较旧的一个。
非常感谢!关闭cloneRepository()返回的Git句柄解决了这个问题。我使用3.6.1,所以JGit版本不是问题 – qwerty
我会使用http://file-leak-detector.kohsuke.org/找出还有文件在哪里打开。 – centic