// Credit: https://stackoverflow.com/users/246263/veger
public void restartApplication()
{
final String javaBin = System.getProperty("java.home") + File.separator + "bin" + File.separator + "java";
final File currentJar = new File(MyClassInTheJar.class.getProtectionDomain().getCodeSource().getLocation().toURI());
/* is it a jar file? */
if(!currentJar.getName().endsWith(".jar"))
return;
/* Build command: java -jar application.jar */
final ArrayList<String> command = new ArrayList<String>();
command.add(javaBin);
command.add("-jar");
command.add(currentJar.getPath());
final ProcessBuilder builder = new ProcessBuilder(command);
builder.start();
System.exit(0);
}
There is nothing like a JVM running in an OS.
Instead several independent instances do run.
Just make sure to stop all running Java
applications (java*.exe) and restart them if necessary.
The Java process runs on demand as and when you want to run it.
It's not a daemon. You need to stop the Java process manually
(kill it) if it doesn't end gracefully.