Не могу понять работу File object.delete()

Я пытаюсь удалить файл jar с помощью java 5 (поэтому API-интерфейс Paths, представленный в Java 7, не является вариантом).

Мой код:

String sep = File.separator;

File test = new File("."+ sep + "server" + sep + "lib" + sep + "testJar.jar");
if(test.delete())
{
    logger.log(Level.INFO,test.getName() + " deleted.");
}
else
{
    logger.log(Level.INFO,"Delete operation is failed for "+test.getName());
}

Когда мой код запускается, файл jar удаляется, но Delete operation is failed for testJar.jar печатается в logs.Cant понимает, почему... любая помощь приветствуется.

UPDATE: Я снова попробовал тот же код, и на этот раз он говорит testJar.jar deleted Теперь я запутался в том, что происходит

Ответ 1

Я вижу, что эта проблема волшебным образом исчезла, но некоторые общие советы по устранению неполадок:

Прежде всего; попробуйте создать и удалить другой файл и проверить права/права на файл.

Убедитесь, что другой процесс не содержит файл:

$ lsof filename

Проверить базовый вызов ОС.

File.delete() передаст основную ОС и, как правило, вызовет remove (или отмените связь). Если вы используете OpenJDK, вы должны иметь возможность просматривать исходный код. Если нет, посмотрите, можете ли вы проследить, что происходит "под обложками".

Напишите небольшой фрагмент, который просто выполняет этот вызов и видит, как работает ОС при попытке удалить этот файл.

Ответ 2

Ошибка удаления файла, если файл, который вы пытаетесь удалить, не существует, заблокирован. Также сбой по соображениям безопасности (недостаточные права для выполнения в локальной системе)

Типичный случай заключается в том, что блокируется, например, если банка используется запущенным приложением или открыта исключительно или анализируется инструментом (например, антивирусом),...