關於 hot code replace fail 問題 .

來源:互聯網
上載者:User

標籤:

頻頻出現Hot code replace failed問題。網上查不到解決方案,想來想去,是否是jvm的問題?我的jre使用自己下載的jdk1.6.07,而MyEclipse的jvm內建的是1.5.0.011版本的,於是更換成jdk1.6.07,該問題解決。 
修改方法:myeclipse.ini裡面的C:\Program Files\Genuitec\Common\binary\com.sun.java.jre.win32.x86_1.5.0.011\bin\client\jvm.dll改成自己的C:\Program Files\Java\jdk1.6.0_07\jre\bin\client\jvm.dll。 

 

 

eclipse/myeclipse 進java代碼的開發,特別是web應用開發,一般情況下,修改設定檔(如web.xml)重啟伺服器才生效.而修改jsp頁面,則不用重啟.

 

若修改的是java檔案,有兩種情況:

1.小規模的修改,沒有改變類的塊結構,不用重啟伺服器,也可以立即生效.(前提是同步發布,即要勾上菜單 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)下面發布了多個web應用程式,而所修改的類的名字在多個web應用中存在(如 有app1和app2兩個應用, app1中有個類com.company.LoginAction, app2中也有個類com.company.LoginAction. 修改的是app1中的LoginAction ).

個人猜測:jvm在進行hot code replace的之前,將所修改的類(app1中的LoginAction)與另外一個應用中的同名類(app2中的LoginAction)對比,發現兩者有結構上的差異,於是認為該類的改變很大,不能夠進行hot code replace.

 

有種簡單的方法可以驗證,是否屬於第三種情況.只部署一個工程在伺服器下,啟動後,再修改java類,如果是小的修改,這個時候myeclipse就不會再有hot code replace fail 的提示了.

關於 hot code replace fail 問題 .

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.