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




Вы не говорите, запущена ли ваша сборка от имени текущего авторизованного пользователя. В противном случае тот факт, что в explorer.exe или другом процессе отображается указанный каталог, также может привести к его блокировке. Но его удаление в том же процессе explorer.exe будет успешным. Попробуйте Unlocker из http://ccollomb.free.fr/unlocker/, чтобы узнать, какие процессы заблокировали файлы / каталоги.
Есть ли что-то в процессе Ant, удерживающее файлы (или каталог) открытыми? Это может вызвать ситуацию, когда вы можете удалить их после запуска ant, но не во время.
По-разному ...
Я согласен с пунктом 3. sysinternals handle.exe бесценен как инструмент командной строки для анализа такого рода проблем.
Итак, sysinternals показывает мне, что javaw.exe имеет дескриптор файла или каталога, что теперь?
Однажды я столкнулся с этой проблемой. Это произошло потому, что файл, который я пытался удалить, был частью путь к классам для другой задачи.
@StefanSprenger, вы должны выполнять свои задачи в правильном порядке
Не всегда причина этой проблемы. Иногда вам просто нужно перезагрузить систему, и все работает нормально. В этом случае, вероятно, причина в том, что Windows ошибочно полагает, что процесс использует эти файлы.
@ShimiBandiel, спасибо, кажется логичным. Я попытался переместить файл вручную, и Windows 10 сказал мне, что он используется Eclipse. Я закрываю Eclipse, перемещаю файл и возобновляю сборку муравья. Что меня раздражает, так это то, что мне нужен этот файл в пути к классам ...
В версиях Ant до 1.8.0 есть ошибка, которая приводит к случайным ошибкам во время операции удаления. Попробуйте использовать Ant 1.8.0 или новее.
Вы можете увидеть подробности об ошибке здесь https://issues.apache.org/bugzilla/show_bug.cgi?id=45960
Мне помогло использование задачи Ant Retry. Я только что обернул его вокруг задачи удаления.
В последнее время у меня часто возникала эта проблема, и это случайно. Один раз это сработает, в следующий раз не сработает. Я использую NetBeans (если это имеет значение) и добавил много дополнительных задач в build.xml. У меня была эта проблема в задаче -post-jar. Это произойдет, когда я вызываю файл unjar, а затем удаляю его. Я подозреваю, что NB пытается сканировать банку, и это вызывает блокировку на ней.
Что сработало для меня, так это немедленно переименовать банку в начале -post-jar и добавить к ней расширение .tmp. Затем я вызываю unjar для временного файла. Когда я закончу, я снова переименовываю банку в желаемое имя.
У меня тоже была такая же проблема, и я пытался вручную удалить каталоги сборки. Наконец, я решил это, переименовав артефакт .jar моего проекта в имя, отличное от имени самого проекта. Например: мой проект был порталом, а мой ant построил скрипт для создания portal.jar, где муравей eclipse не смог удалить этот portal.jar. Когда я изменил свой build.xml, чтобы сгенерировать свой .jar как portalnew.jar, в следующий раз eclipse смог удалить этот portalnew.jar. Надеюсь это поможет.
Я столкнулся с той же проблемой. На моем компьютере не установлен путь к классам или запущен антивирус. Однако версия ANT, которую я использовал, была 32-битной, а JDK, который я установил, был 64-битным. Я установил 32-битный JDK, и проблема была решена.
такая же проблема для меня ... работал после перехода на 32-битный jdk ... спасибо братан
В моем случае мой ant clean не работал из Eclipse, не мог удалить файлы сборки. Я вижу это время от времени. Обычно удается повторить попытку. На этот раз нет. Пытался запустить ant clean из командной строки, не удалось. Невозможно удалить «невозможно удалить». Должно быть, Eclipse держал проблемный файл, когда я вышел из Eclipse, строка cmd смогла удалить OK.
Вам нужно удалить его вручную в 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" />
Какую версию Ant вы используете?