В дополнение к решению Jigar вы можете захотеть делегировать дополнительные параметры перезапускаемому приложению, такие как параметры виртуальной машины, программные аргументы или базовый каталог вашего приложения.Вы можете расширить эту заглушку для своих нужд:
private static void restartApplication() throws IOException {
List<String> arguments = ManagementFactory.getRuntimeMXBean().getInputArguments();
List<String> fullRestart = new ArrayList<String>();
fullRestart.add(System.getProperty("java.home")+"/bin/java");
fullRestart.addAll(arguments);
fullRestart.add("-cp");
fullRestart.add(System.getProperty("java.class.path"));
// Assuming that 'Application' contains the main method:
fullRestart.add(Application.class.getName());
ProcessBuilder pb = new ProcessBuilder(fullRestart);
pb.directory(new File(".").getParentFile());
System.out.println("Starting app - arguments: " + fullRestart);
pb.start();
System.exit(0);
}