我有運行的Java二進制代碼(xx.jar文件) 當其運行我erranously刪除xx.jar服務器程序文件。該計劃繼續運行。但我不確定結果是否正確,我不確定該程序是否會失敗?如果我刪除xx.jar文件發生後,我開始執行xx.jar
當我刪除xx.jar文件,程序在很長一段時間的方法,仍然是在方法調用。當它調用另一個方法調用時,我的程序會失敗嗎?
我問這個問題,因爲如果刪除該文件有任何傷害,我將一臺服務器機器
我有運行的Java二進制代碼(xx.jar文件) 當其運行我erranously刪除xx.jar服務器程序文件。該計劃繼續運行。但我不確定結果是否正確,我不確定該程序是否會失敗?如果我刪除xx.jar文件發生後,我開始執行xx.jar
當我刪除xx.jar文件,程序在很長一段時間的方法,仍然是在方法調用。當它調用另一個方法調用時,我的程序會失敗嗎?
我問這個問題,因爲如果刪除該文件有任何傷害,我將一臺服務器機器
根據您的操作系統,這將會或不會成爲問題。例如,在Linux上,一個文件在所有打開它的應用程序打開後纔會被刪除。該文件將從目錄列表中刪除,但它仍然存在,可以通過打開有效文件描述符的任何應用程序進行讀取(甚至可以寫入!)。
無論是否JVM保持文件描述符開放給應用程序的所有jar文件,我不知道。即使它有時確實有效,我也不會依賴它。
上獲得約3-4小時沒有保證的JVM將從.jar
文件加載的所有類到內存儘管它可以預加載部分或全部的.jar
作爲優化。
如果失敗了,我想這將在某些時候,它不會一個方法的執行過程中發生的期間。這將是一個新類必須從類路徑加載,並且JVM不能再訪問該文件。那麼你會失敗NoClassDefFoundError
或更糟。
所以,不,我絕對不會建議你這樣做,即使它發生在某些情況下工作。
你會知道,當你完全部署和重新部署應用程序並重新啓動它。
相關功能將失敗及期望將被拋出
不用它繼續正常工作。但在調用其他類/方法之前,我複製了另一個與已刪除的xx.jar相同的xx.jar。 – ogzylz 2010-04-23 08:19:35
,你會得到一個NullPointerException異常,如果你的Web容器的Tomcat 7.0.59。我在幾分鐘前做過。
感謝上帝我正在使用Linux。 ------ >>我之前問過的另一個問題 - >>當我刪除xx.jar文件時,Currenty程序仍然運行相同的方法。我將完全相同的xx.jar文件放入到我刪除xx.jar的文件夾中。當程序退出運行的方法並調用另一個方法或類時,此解決方案是否會阻止失敗? - ogzylz 3秒前編輯[刪除評論] – ogzylz 2010-04-23 08:00:50
我的程序稱爲新班現在並沒有導致錯誤。 Thnx很多 – ogzylz 2010-04-23 08:18:01