2013-04-04 77 views
3

我使用Eclipse IDE的Java開發人員Eclipse IDE的調試與代碼變化

版本:赫利俄斯服務發佈1 版本ID:20100917-0705

在遠程調試的Web應用程序和Tomcat 7.0.37,當我做了一些更改,甚至是一行,所做的更改無法進入運行時,所以我需要重新編譯並重新部署war應用程序。浪費了很多時間。該消息:

Hot code replace failed - Delete method not implemented 

我不明白這條消息。

任何人都知道如何在調試模式下自動反映代碼更改的祕密?謝謝。

回答

3

我發現,熱代碼替換要修改/替換的代碼必須位於執行堆棧中。因此,您可以熱替換對停止的方法所做的更改,但是一旦您退出該方法,就不能熱替換對該方法所做的更改...除非您首先在連續調用中停止方法方法。

+0

有時它可以工作,但有時它不起作用。 – Dave 2013-04-25 02:33:01

-2

我覺得沒有辦法反映在調試模式下的代碼更改

  • 調試模式是跟蹤程序流程,並發現如果在特定的代碼塊的任何問題或錯誤....
  • 它只是指向eclipse中的代碼行,它在你的tomcat中運行,即即。在Eclipse代碼不用於運行應用u必須安裝的代碼或將在Tomcat中運行

因此您在Eclipse中所做的更改着在tomcat的代碼反映

+1

有時它有效,比如5%,它被稱爲熱代碼替換。 – Dave 2013-04-04 15:19:00

+0

哦,拜託..在做這件事之前,先了解一下你正在回答的問題。 – stolsvik 2015-04-19 01:55:28

1

使用標準JVM(Oracle's),只能修改現有的方法。不支持添加和刪除方法,以及改變類的結構(移動方法,字段)。爲此,請去JRebel!

有一點需要注意的是,對某些方法中看似「普通代碼」的更改實際上需要java編譯器添加或刪除方法 - 因此它將失敗。這發生在例如如果你在一個內部類中訪問外部類中的私有字段 - java編譯器將需要向外部類添加綜合訪問器方法,讓內部類訪問這些字段 - 因此將無法進行熱代碼替換。另外,如果你刪除了一些訪問這些字段的代碼,java編譯器想要刪除相應的綜合訪問器方法,這也會失敗。