我有一個相當大的java程序,我們想讓它使用戶可以退出應用程序並以另一個用戶身份登錄。要做到這一點,我們想關閉應用程序並重新啓動它,以便向用戶顯示登錄對話框。問題是,該應用程序相當大,寫得不好。它有很多靜態變量可以保存某種狀態信息。理想情況下,我想重寫應用程序以處理這些可以全部清除的情況,但實際上我們需要儘快提供此功能。如何從java內重新啓動java程序?
我在想什麼最簡單的就是停下應用程序並開始一個新的虛擬機。然而,在關閉當前應用程序的同時停止並應用並啓動相同的應用程序似乎令人驚訝地困難。有沒有人有這樣的經驗?
編輯:我們正在追求使用Runtime.exec來再次調用同一個應用程序,但exec()想阻止,所以我們必須跳過箍環讓它在每個平臺(Windows,Mac,Linux)上工作。我更喜歡獨立於平臺的方式。
可能重複[重新啓動Java應用程序。](http://stackoverflow.com/questions/4159802/restart-a-java-application) – 2011-01-10 18:01:20
該問題有一個答案使用`ProcessBuilder`,這是建議在`Runtime.exex(cmdarray,envp,dir)`的文檔。 「ProcessBuilder.start()現在是使用修改後的環境啓動進程的首選方式。」 – 2011-01-10 18:13:45
這應該是「Runtime.exec(...)」(不是「exex」)。 – 2011-01-15 01:30:59