2015-05-25 72 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