I need a JAR file to delete itself.
The issue is that Windows locks the JAR file while it is running, and can't delete itself directly.
I have looked into solutions where a batch script could kill the JAR process and then delete the file, but
System.exit(0)
is not desired because it is not runnable viaBatch
file.taskkill /F /IM "java.exe"
is not desired because it kills ALLJava
processes.jps
cannot be used because it is only available in theJDK
and users might run aJRE
so that would fail.
I'm stuck on looking for a solution which lets me find the PID
of the current JAR
using Java
code, then writing out a Batch
command and inserting the PID
which kills the process e.g. like the following:
printWriter.println("taskkill /PID " + currentJARPID);
If you're wondering what this is for, you can check this answer.