Ant не может удалить некоторые файлы в окнах

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

Ответы

Ответ 1

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

Ответ 2

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

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

Ответ 3

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

Ответ 4

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

Ответ 5

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

Ответ 6

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

Ответ 7

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

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

Ответ 8

У меня была эта проблема много в последнее время, и она случайная. Один раз он работает, в следующий раз, когда он не работает. Я использую NetBeans (в случае, если это имеет значение), и я добавил много дополнительных задач для build.xml. У меня была эта проблема в задаче -post-jar. Это произойдет, когда я вызову unjar в файле, а затем удалю. Я подозреваю, что NB пытается сканировать банку, и это вызывает блокировку.

Что сработало для меня, так это сразу же переименовать банку в начале -post-jar и добавить к ней расширение .tmp. Затем я вызываю unjar в файле temp. Когда я закончил, я переименую имя нужного баннера.

Ответ 9

У меня тоже была такая же проблема, и я попытался вручную удалить каталоги сборки. Наконец, я решил это, переименовав артефакт .jar моего проекта на другое имя из самого имени проекта. Например: моим проектом был портал, а мой ant встроенный script использовать для генерации portal.jar, где eclipse ant не смог удалить этот portal.jar. Когда я изменил свой build.xml, чтобы сгенерировать мой .jar как portalnew.jar, eclipse смог удалить этот портал new.jar в следующий раз. Надеюсь, это поможет.

Ответ 10

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

Ответ 11

Вам нужно удалить его вручную в Windows. Это сработало для меня. (Обычно файлы, которые нужно удалить, - это более старые версии jar. Например: если существует httpcore.4.2.5.ja5r и httpcore.4.3.jar, он попытается удалить 4.2.5.jar)

Ответ 12

i столкнулся с этой проблемой, поскольку файл, который пытался удалить файл ant, использовался некоторыми другими службами/процессами. Я остановил службу, а затем выполнил ant build script.