Муравей не может удалить некоторые файлы в Windows - PullRequest
16 голосов
/ 17 сентября 2008

У меня есть сборка муравья, которая делает каталоги, вызывает javac и все обычные вещи. Проблема, с которой я столкнулся, заключается в том, что при попытке выполнить очистку (удалить все созданные файлы) отчет о задаче удаления не смог удалить некоторые файлы. Когда я пытаюсь удалить их вручную, это работает просто отлично. Файлы, по-видимому, не открываются никаким другим процессом, но ant все равно не удаляет их. Что я могу сделать?

Ответы [ 15 ]

13 голосов
/ 17 сентября 2008

Я столкнулся с этой проблемой один раз. Это потому, что файл, который я пытался удалить, был частью classpath для другой задачи.

9 голосов
/ 17 сентября 2008

Это зависит ...

  • У процесса Ant недостаточно прав для удаления файлов (обычно потому, что они были созданы другим пользователем, возможно, системным пользователем). Попробуйте запустить скрипт Ant от имени администратора, используя Запуск от имени.
  • Windows действительно плохо очищает блокировки файлов, когда процессы умирают или убиваются; следовательно, Windows считает, что файл заблокирован процессом, который умер (или был убит). В этой ситуации вы ничего не можете сделать, кроме перезагрузки.
  • Получите лучшие инструменты для проверки состояния вашей системы. Я рекомендую загрузить инструменты SysInternals и использовать их вместо стандартных Windows-эквивалентов.
5 голосов
/ 20 августа 2012

Использование задачи Ant Retry помогло мне. Я только что обернул его вокруг задачи удаления.

3 голосов
/ 28 мая 2014

Я столкнулся с той же проблемой.
На моей машине не было установлено ни одного classpath или антивируса.
Однако версия ANT, которую я использовал, была 32-разрядной, а установленный JDK - 64-разрядным.
Я установил 32-битный JDK, и проблема была решена.

3 голосов
/ 17 сентября 2008

Вы не говорите, запущена ли ваша сборка как зарегистрированный пользователь. Если нет, то тот факт, что explorer.exe или другой процесс имеет указанный каталог, также может привести к его блокировке. Но удаление его в том же процессе explorer.exe будет успешным. Попробуйте Unlocker из http://ccollomb.free.fr/unlocker/, чтобы увидеть, какие процессы заблокировали файлы / каталоги.

2 голосов
/ 05 марта 2012

В версиях Ant до 1.8.0 есть ошибка, которая приводит к случайным ошибкам во время операции удаления. Попробуйте использовать Ant 1.8.0 или новее.

Вы можете увидеть подробности ошибки здесь https://issues.apache.org/bugzilla/show_bug.cgi?id=45960

2 голосов
/ 17 сентября 2008

Есть ли в процессе Ant что-то, что держит файлы (или каталог) открытыми? Это может привести к тому, что вы сможете удалить их после запуска ant, но не во время.

1 голос
/ 03 сентября 2014

В моем случае мой Eclipse не смог удалить файлы сборки. Я вижу это время от времени. Обычно это удается при повторной попытке. На этот раз нет. Попытался запустить ant clean из командной строки, не удалось удалить «невозможно удалить». Должно быть, Eclipse держал файл проблемы, когда я выходил из Eclipse, строка cmd смогла удалить OK.

0 голосов
/ 04 марта 2019

Если у вас установлен git
откройте каталог в оболочке git bash (найдите git bash в начале).
Затем введите команду bash, чтобы удалить файлы как

rm -r filename.xyz
0 голосов
/ 07 ноября 2018

Я вижу такие проблемы слишком часто, так как я перешел на Microsoft Windows 10. Переименование файла непосредственно перед удалением решило его для меня:

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