前两天看见Gwt2.0发布的消息,新的特性让人相当兴奋,尤其是开发者模式,大大提高了调试效率。随即就将项目升级到了Gwt2.0+Gxt2.1, 并且eclipse也更新到最新的1.2..
安装插件,运行代码,一路基本都没有问题。。 在开发者模式下访问host page... 碰到如下错误:
错误信息 写道
经过一番google也没查出什么原因, 用一段很简单的代码调试追踪(代码如下:),发现是devMode反射的时候出的问题,虽然知道问题的大致原因,但是还是没办法解决。
package st.lv.web.im.client;
import com.google.gwt.core.client.EntryPoint; /** * Entry point classes define <code>onModuleLoad()</code>. */ public class WebIM implements EntryPoint { /** * This is the entry point method. */ public void onModuleLoad() { // com.google.gwt.user.client.Window.alert("ok..");//this line is ok.. com.extjs.gxt.ui.client.widget.MessageBox.alert("gxt", "gxt", null); } }
最后只得求助ext的官方论坛, 最终将这段代码跑通解决了。。
http://www.extjs.com/forum/showthread.php?p=420100#post420100post420100
经tortexy解释: 该原因是由Class Loader产生的,当com.extjs.gxt.ui.client.widget.Layout加载太晚,classloader将停止执行。
最终代码如下所示:
package st.lv.demo.overview.client; import com.extjs.gxt.ui.client.widget.Layout; import com.extjs.gxt.ui.client.widget.MessageBox; import com.extjs.gxt.ui.client.widget.layout.AnchorLayout; import com.google.gwt.core.client.EntryPoint; /** * Entry point classes define <code>onModuleLoad()</code>. */ public class Gwt2Gxt implements EntryPoint { /** * This is the entry point method. */ public void onModuleLoad() { @SuppressWarnings("unused") Layout junk = new AnchorLayout();//提前初始化Layout对象 MessageBox.alert("Msg", "gxt MessageBox", null); } }
虽然这个问题解决了,但是项目在Gxt2.1+Gwt2.0的Develop Mode下还是会报很多错误,依然没有升级到Gwt2.0... 不过在Gxt的论坛上并没有太多设计关于Gxt2.1中使用Gwt2.0新特性的问题,看来这些东西又得自己开始慢慢摸索了。。。