2014-01-22 31 views
1

我有一个Java应用程序,当有更新它应该重新启动。我怎么能再次自动重新启动Java应用程序。重新启动一个Java应用程序的Linux和Windows

我尝试使用进程生成器重新启动。

ProcessBuilder builder = new ProcessBuilder(command); 
builder.directory(new File(workingDir)); 
builder.start(); 
System.exit(0); 

但是,当我检查运行早期过程的应用程序仍在运行。

+0

是否应用程序。有一个GUI? –

+0

是的,它有一个gui。 – Hash

+0

对于部署Java桌面应用程序,最好的选择通常是安装应用程序。使用[Java Web Start](http://stackoverflow.com/tags/java-web-start/info)。 JWS可在Windows,OS X和* nix上运行,并提供自动和程序控制的更新。 –

回答

2

将您的进程重新启动逻辑放在separate thread中,并将其注册为shutdown hook

也许你可以让这个关机钩线程daemon,并在主线程中进行一些睡眠。如果进程在给定时间内没有重新启动,他们只需退出应用程序,否则应用程序将重新启动并让此(主)进程关闭。

也开始新的过程中,你可能要考虑

Runtime.getRuntime().exec(yourProcess); 

对于windows,你可以做

Runtime.getRuntime().exec("cmd /c start yourProcess"); 

和Linux进程开始时默认脱离所以只执行与Runtime.getRuntime().exec(yourProcess);命令应该做的诀窍。