關于 hot code replace fail 問題 收藏
eclipse/myeclipse 進java代碼的開發(fā),特別是web應用開發(fā),一般情況下,修改配置文件(如web.xml)重啟服務器才生效.而修改jsp頁面,則不用重啟. 若修改的是java文件,有兩種情況:
1.小規(guī)模的修改,沒有改變類的塊結構,不用重啟服務器,也可以立即生效.(前提是同步發(fā)布,即要勾上菜單 project->build automatically)
2.修改了類的結構(如增加或刪除類的方法,字段).如果是這種情況,myeclipse會有"hot code replace fail"的提示,和失敗的原因的說明(如add method not implemented, scheme change not implemented 等),并且提示重新啟動服務器.這種情況要重啟服務器才可以生效.
3.還有一種情況,對java文件進行小的修改(如 代碼中不重要的地方加一個空格 )然后保存,myeclipse也會提示hot code replace fail.這種情況遇到的幾率很小. 這種情況的很可能是服務器(如tomcat)下面發(fā)布了多個web應用程序,而所修改的類的名字在多個web應用中存在(如 有app1和app2兩個應用, app1中有個類com.company.LoginAction, app2中也有個類com.company.LoginAction. 修改的是app1中的LoginAction ).
個人猜測:jvm在進行hot code replace的之前,將所修改的類(app1中的LoginAction)與另外一個應用中的同名類(app2中的LoginAction)對比,發(fā)現(xiàn)兩者有結構上的差異,于是認為該類的改變很大,不能夠進行hot code replace.
有種簡單的方法可以驗證,是否屬于第三種情況.只部署一個工程在服務器下,啟動后,再修改java類,如果是小的修改,這個時候myeclipse就不會再有hot code replace fail 的提示了.
本文來自CSDN博客,轉載請標明出處:http://blog.csdn.net/yellowshine/archive/2009/02/23/3928134.aspx
|
|
來自: 鬼迷心竅 > 《web開發(fā)》