84487906 2012-09-15
接触GWT时间不长,见过一些编译错误,比如在Client端引用了某个Jar包,或者诸如java.util.Calendar之类,在编译时就会提示:
[INFO][ERROR] Line xxx: No source code is available for type java.util.C alendar; did you forget to inherit a required module?
自己也曾模糊地意识到GWT其实会把Client端的代码编译为JavaScript代码,出现诸如此类错误的原因大致就是,我们所引用的类或jar包,GWT并不知道如何将之编译为JavaScript。那其实让人很好奇,GWT到底自己实现了那些Java类到JavaScript的编译呢? 曾经很天真的认为只要实现了java.io.Serializable接口的类都会被识别并编译,但 java.util.Calendar 确实实现了 Serializable接口,看来事情并不像我想象的那样简单。
今天恰巧在stackoverflow上看到一个这样的问题,回答者给出了文档链接,汗颜,看来GWT的文档还是看得太少了啊!https://developers.google.com/web-toolkit/doc/latest/RefJreEmulation?hl=zh-CN 据文档说明,如下所列举的类可以被GWT自动转化成为JS代码,但是某些情形下,对于某些类型,只有一部分方法可以实现转化。具体可以自己参看说明,就不赘述了。
java.lang java.lang.annotation java.math java.io java.sql java.util java.util.logging