Вопрос

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

Это было полезно?

Решение

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

Другие советы

Это зависит от обстоятельств ...

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

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

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

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

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

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

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

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

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

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

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

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

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

В моем случае я остановил запуск Java-процесса из диспетчера задач и повторно запустил файл сборки Ant.Файл удалось удалить, и сборка прошла успешно.

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

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

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

rm -r filename.xyz
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top