2014-01-22 30 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);命令應該做的訣竅。