使用@JsType时,GWT 2.8与经典开发模式错误@JsMethod样本

时间:2016-11-19 18:11:48

标签: java gwt

我的框架项目有一个EJB架构设计,客户端GWT2.7 + gwt-material 1.6和smartGWT用于maven模型上的一些小部件,我也使用Classic Dev Mode(最适合我)工具进行调试,我还没有对此有任何问题,直到今天......

当我将GWT2.7升级到2.8时,我写了一个@JsType示例,我得到了下一个错误:

com.google.gwt.core.client.JavaScriptException :( null)@ com.mypackage.MyApplication $ SomeClassJsType :: getName()([]):null

这是班级:

@JsType(isNative=true, namespace = "com.cnames")
public class SomeClassJsType {
    @JsMethod
    public static native String getName();
}

以下是我在EntryPoint中使用该类的方法

rootPanel.add( new Label( SomeClassJsType.getName() ) );

这是HTML页面中的javascript片段

<body>
    <script type="text/javascript">
        com = { cnames: {} };
        com.cnames.SomeClassJsType = function () {
                this.name = "hello";    
        };
        com.cnames.SomeClassJsType.getName = function () {
                this.name = "world";    
        };      
    </script>
    <script type="text/javascript" language="javascript" src="Application/Application.nocache.js"></script>
</body>
  • 编译确定
  • 生成EAR文件OK(War和JAR模块)
  • 在WildfLY上部署10确定
  • 在浏览器上运行确定
  • 经典开发模式下的Degub(失败!!!)
  • 在SuperDevMode上使用Degub(对于某些JAAS,EJB,Hibernate等东西,可以在服务器端崩溃)

我的目标是,在Clasic Dev Mode上调试我的项目。

为什么呢? 如果我将GWT Material 1.6升级到2.0-rc2,我会收到下一个错误。

com.google.gwt.user.client.ui.AttachDetachException: Exception caught: 2 exceptions caught: Exception caught: (null) @gwt.material.design.client.js.JsMaterialElement::displayEffect()([]): null; Exception caught: (null) @gwt.material.design.client.js.JsMaterialElement::displayEffect()([]): null

我怀疑这是由于@JsType注释

任何建议?

问候!

1 个答案:

答案 0 :(得分:3)

JsInterop只能与SuperDevMode一起使用,遗留devmode所需的所有字节码重写都没有实现(对于仅适用于选择和/或古老浏览器的弃用功能,浪费时间)