¿Cómo eliminar un file bloqueado por la plataforma Java?

Actualmente estoy desarrollando una aplicación que clona repositorys de Git gracias a JGit ( http://wiki.eclipse.org/JGit/User_Guide ) cada vez que un usuario inicia session. Cuando el usuario quiere salir de la aplicación, quiero eliminar el clon. Aquí está el problema: al clonar un repository, se crea una carpeta .git, en la que se puede encontrar un file .pack (.git / objects / pack / sutpideFile.pack) y que no se puede eliminar, porque la Plataforma Java lo está bloqueando (Al intentar eliminarlo a mano, aparece el error 'La acción no se puede completar porque el file está abierto en Java (TM) Platform SE binary').

ESTE ES UN PROBLEMA CONJUIDO con Jgit: el file .pack de git repo no se puede eliminar con el método File delete () . Por lo tanto, he utilizado la solución propuesta aquí: https://github.com/ajoberstar/grgit/issues/33, que es agregar esas tres líneas antes de mi método de eliminación:
WindowCacheConfig config = new WindowCacheConfig ();
config.setPackedGitMMAP (verdadero);
WindowCache.install (config);

PERO lo que realmente me molesta porque no entiendo es que esta solución solo funciona una vez : lance el server (TomCat), me conecto y luego desconecto. Aquí, se borra toda la carpeta. Sin embargo, cuando me vuelvo a conectar y desconecto (sin volver a iniciar el server), los files se relanzan y ya no puedo borrarlos hasta que apago el server.

¿Alguien tiene la más ligera idea de por qué funciona, pero solo una vez?

Gracias por tu ayuda,

EDITAR: Bueno, solo necesitaba agregar git.getRepository (). Close (); cuando termino de usar el object Git. ¡Entonces la eliminación es posible!

Este es un error conocido en JGit , consulte la discusión en Cómo liberar lockings del sistema de files después de clonación del repository a través de JGit.

Básicamente, actualmente necesita agregar la llamada a "Git.getRepository (). Close ()" para liberar todos los lockings del sistema de files hasta que se publique una nueva versión de JGit.

 result = Git.cloneRepository() .setURI( 'https://github.com/github/testrepo.git' ) .setDirectory( localPath ) .call(); // this is currently necessary to free all file locks result.getRepository().close(); result.close(); 

JGit 4.1 tiene una solución para esto incluida.