我有一个java应用程序,当有更新它应该重新启动。我怎么能再次自动重启java应用程序。
我尝试使用“进程”构建器重新启动。
ProcessBuilder builder = new ProcessBuilder(command);
builder.directory(new File(workingDir));
builder.start();
System.exit(0);
但是当我检查运行早期进程的应用程序仍在运行时。
答案 0 :(得分:2)
将您的流程重新启动逻辑放在separate thread
中,并将其注册为shutdown hook
。
也许你可以给make这个关闭钩子线程daemon
并在主线程中放一些睡眠。如果进程在给定时间内没有重新启动,则只需退出应用程序,否则应用程序将重新启动并让此(主)进程关闭。
同样,对于开始新流程,您可能需要考虑
Runtime.getRuntime().exec(yourProcess);
对于Windows,你可以做到
Runtime.getRuntime().exec("cmd /c start yourProcess");
并且对于linux进程默认启动分离,因此仅使用Runtime.getRuntime().exec(yourProcess);
执行命令就可以了。