2015-05-25 3 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(); 
    } 

Смотрите также this code snippet из jgit-cookbook

Кроме того, некоторые места в JGit, которые могут держать открытые файловые дескрипторы, были исправлены в некоторый момент после JGit 3.5.1, см. this bug, так что это также может помочь обеспечить использование последней версии JGit, если вы все еще используете старше.

+0

Большое вам спасибо! Закрытие дескриптора Git, возвращаемого cloneRepository(), устранило проблему. Я использовал 3.6.1, поэтому версия JGit не была проблемой – qwerty

Смежные вопросы