Question

J'ai une compilation de fourmis qui crée des répertoires, des appels javac et tous les éléments courants. Le problème que je rencontre est que lorsque j'essaie de nettoyer (supprimer tout le contenu généré) la tâche de suppression indique qu'il n'a pas été possible de supprimer certains fichiers. Lorsque j'essaie de les supprimer manuellement, cela fonctionne très bien. Les fichiers ne sont apparemment ouverts par aucun autre processus, mais ne parvient toujours pas à les supprimer. Que puis-je faire?

Était-ce utile?

La solution

J'ai rencontré ce problème une fois. C'est parce que le fichier que j'ai essayé de supprimer faisait partie d'un chemin de classe pour une autre tâche.

Autres conseils

Cela dépend ...

  • Le processus Ant ne dispose pas d'autorisations suffisantes pour supprimer les fichiers (généralement parce qu'ils ont été créés par un autre utilisateur, peut-être un utilisateur système). Essayez d’exécuter votre script Ant en tant qu’utilisateur administratif, en utilisant Exécuter en tant que.
  • Windows est vraiment mauvais pour nettoyer les verrous de fichiers lorsque des processus meurent ou sont tués; par conséquent, Windows pense que le fichier est verrouillé par un processus mort (ou tué). Dans cette situation, vous ne pouvez rien faire d'autre que de redémarrer.
  • Obtenez de meilleurs outils pour inspecter l'état de votre système. Je recommande de télécharger les outils SysInternals et de les utiliser à la place de leurs équivalents Windows par défaut. .

L’utilisation de Ant Retry m'a aidé. Je viens de décrire la tâche de suppression.

Vous ne dites pas si votre build est exécuté en tant qu'utilisateur actuellement connecté. Sinon, le fait que explorer.exe ou un autre processus ait le répertoire affiché peut également entraîner son verrouillage. Mais le supprimer dans le même processus explorer.exe réussirait. Essayez Unlocker à partir de http://ccollomb.free.fr/unlocker/ pour voir quels processus ont le fichiers / répertoires verrouillés.

J'ai rencontré le même problème.
Je n'ai pas défini de chemin de classe ni d'antivirus sur ma machine.
Cependant, la version ANT que j’utilisais était la version 32 bits et le JDK que j’avais installé était la version 64 bits.
J'ai installé un JDK 32 bits et le problème a été résolu.

Y at-il quelque chose du processus Ant contenant les fichiers (ou répertoires) ouverts? Cela provoquerait la situation où vous pourriez les supprimer après avoir exécuté ant, mais pas pendant.

Les versions Ant antérieures à la version 1.8.0 présentent un bogue qui entraîne des erreurs aléatoires lors de l'opération de suppression. Essayez d’utiliser Ant 1.8.0 ou plus récent.

Vous pouvez voir les détails du bogue ici https://issues.apache.org /bugzilla/show_bug.cgi?id=45960

Dans mon cas, mon programme de nettoyage de fourmis échouait avec Eclipse, impossible de supprimer les fichiers de construction. Je le vois de temps en temps. Réussit généralement après une tentative répétée. Cette fois non. Essayé d'exécuter ant clean depuis la ligne de commande, échec Impossible de supprimer "impossible de supprimer". Eclipse a dû conserver le fichier du problème. Lorsque je suis sorti d'Eclipse, cmd line a été capable de supprimer OK.

J'ai eu ce problème beaucoup récemment et c'est aléatoire. Une fois, cela fonctionne, la prochaine fois, cela ne fonctionne pas. J'utilise NetBeans (au cas où cela compte) et j'ai ajouté de nombreuses tâches supplémentaires à build.xml. J'avais ce problème dans la tâche -post-jar. Cela se produirait lorsque j'appellerais unjar sur le fichier, puis le supprimerais. Je soupçonne que NB essaie de scanner le bocal et que cela provoque le verrouillage.

Ce qui a fonctionné pour moi est de renommer immédiatement le fichier jar au début de -post-jar et d’y ajouter une extension .tmp. Ensuite, j'appelle unjar sur le fichier temporaire. Quand j'ai terminé, je renomme le nom du bocal souhaité.

Moi aussi j'ai eu le même problème et on a essayé de supprimer manuellement les répertoires de construction. Enfin, je l'ai résolu en renommant l'artefact .jar de mon projet sous un nom différent du nom du projet lui-même. Par exemple, mon projet était portal et mon script construit avec ant est utilisé pour générer portal.jar, où eclipse ant n'a pas pu supprimer ce portal.jar. Quand j'ai changé mon build.xml pour générer mon .jar en tant que portalnew.jar, eclipse a pu supprimer ce portalnew.jar la prochaine fois. J'espère que cela vous aidera.

Vous devez le supprimer manuellement sous Windows. Cela a fonctionné pour moi. (Généralement, les fichiers à supprimer sont des versions plus anciennes de jar. Par exemple: s'il existe httpcore.4.2.5.ja5r et httpcore.4.3.jar, il essaiera de supprimer 4.2.5.jar.)

J'ai rencontré ce problème car le fichier que la fourmi tentait de supprimer était utilisé par un autre service / processus. J'ai arrêté le service, puis le script de génération ant a été exécuté.

Dans mon cas, j'ai arrêté l'exécution du processus Java à partir du gestionnaire de tâches et réexécutez le fichier de construction Ant. Le fichier a pu être supprimé et la construction a réussi.

Je vois trop souvent de tels problèmes depuis que je suis passé à Microsoft Windows 10. Renommer le fichier immédiatement avant de le supprimer l'a résolu pour moi:

<rename src="file.name" dest="file.name.old"/>
<delete file="file.name.old" />

Si vous avez installé git
ouvrez le répertoire dans le shell git bash (recherchez git bash au début).
Ensuite, tapez la commande bash pour supprimer les fichiers. comme

rm -r filename.xyz
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top