и все равно будет работать нормально но удаляю быстрее
ужен файл JAR, чтобы удалить себя.
Проблема в том, что Windows блокирует файл JAR во время его работы и не может удалить себя напрямую.
Я искал решения, в которых пакетный скрипт может убить процесс JAR, а затем удалить файл, но
System.exit(0)
не желательно, потому что он не запускается черезBatch
файл.taskkill /F /IM "java.exe"
не желательно, потому что это убиваетВСЕ Java
процессы.jps
не может быть использованпотому что это доступно только вJDK
и пользователи могут запуститьJRE
так что не получится.Я застрял в поиске решения, которое позволяет мне найтиPID
текущегоJAR
с помощьюJava
код, затем выписываяBatch
команда и вставкаPID
который убивает процесс, например как следующее:
printWriter.println("taskkill /PID " + currentJARPID);
Если вам интересно, для чего это нужно, вы можете проверитьэто ответ.