Я использую ant 1.8.0 и java 1.6.0.17, и у меня возникает странная проблема.ant error Невозможно переименовать старый файл во временный файл
В моем build.xml, у меня есть простая задача, которая компилирует код
<javac destdir="${dir.build.classes}" debug="on">
<classpath refid="classpath"/>
<src path="${dir.src.java}"/>
</javac>
В «пути к классам» является баночкой, назовем его library.jar
В более поздней задаче, мне нужно добавить несколько классов в library.jar
, что я делаю, как этот
<jar destfile="library.jar" update="true" duplicate="fail">
<fileset dir="${dir.build.classes}">
<include name="some/class/files"/>
</fileset>
</jar>
Это произойдет сбой с ошибкой Unable to rename old file (library.jar) to temporary file
Я застрял в вызове handle.exe до и после вызова javac, и я могу подтвердить, что java-процесс, запускаемый ant, захватывает дескриптор файла library.jar во время вызова javac, и он не дает его вверх. Это приводит к моей более поздней попытке обновить банку, чтобы сбой.
Зачем муравей держать ручку в банке в открытом классе, даже после завершения задачи javac?
Можете ли вы объяснить, что вы имеете в виду под «явно установить путь к классам JAVAC задачи по»? Это довольно большой набор фляг, который используется в нескольких других местах, поэтому жесткое их кодирование на самом деле не вариант, и я не уверен, почему это изменило бы ситуацию. – karoberts