2015-05-25 71 views
2

我已经使用JGit API创建了本地存储库。当所有的处理完成后,我想删除本地回购(这是一个简单的java.io.File)。但File.delete()操作失败。我已致电干净关机JGit

org.eclipse.jgit.api.Git.close() 
org.eclipse.jgit.lib.Repository.close() 

是否需要进一步清理?我跑进

+0

我会使用http://file-leak-detector.kohsuke.org/找出还有文件在哪里打开。 – centic

回答

2

的一件事是,如果你使用Git.cloneRepository()()调用,您需要关闭返回的结果,即

Git result = Git.cloneRepository() 
      .... 
      .call(); 

    try { 
     ... 
    } finally { 
     result.close(); 
    } 

参见从jgit-cookbook

this code snippet

此外,JGit中可能使文件句柄打开的某些位置在JGit 3.5.1之后的某个点处得到修复,请参阅this bug,因此如果您仍在使用JGit,可能还有助于确保使用最新版本的JGit较旧的一个。

+0

非常感谢!关闭cloneRepository()返回的Git句柄解决了这个问题。我使用3.6.1,所以JGit版本不是问题 – qwerty