`
SilenceGG
  • 浏览: 107073 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

网上转载(关于 hot code replace fail 问题)

阅读更多

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 的提示了.


今天突然遇到这个问题....以前一直好好的,在tomact的debug模式下选中工具栏project---build

automatically还是不能解决问题
按以上说法试了试 果 然是第3个原因造成滴 把webapp下的项目情空 问题瞬间解决
哎....汗啊 整得我头都昏了 网络资源果然强势啊

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics