从JSNI调用Java方法的GWT问题

时间:2011-01-05 20:54:12

标签: gwt

我在此页面尝试了Google的示例: http://code.google.com/docreader/#p=google-web-toolkit-doc-1-5&s=google-web-toolkit-doc-1-5&t=DevGuideJavaFromJavaScript

我希望能够从JSNI调用Java方法,但没有任何反应。没有错误,但没有调用方法。但是,我可以修改我班级的字段。

这是我尝试过的代码:

package com.jsni.client;
import com.google.gwt.core.client.EntryPoint;

public class Testjsnii implements EntryPoint {
      String myInstanceField;
      static int myStaticField;

      void instanceFoo(String s) {
          System.out.println(s);
      }

      static void staticFoo(String s) {
          System.out.println(s);
      }

      public native void bar(Testjsnii x, String s) /*-{

        this.@com.jsni.client.Testjsnii::instanceFoo(Ljava/lang/String;)(s);
        x.@com.jsni.client.Testjsnii::instanceFoo(Ljava/lang/String;)(s);
        @com.jsni.client.Testjsnii::staticFoo(Ljava/lang/String;)(s);
        var val = this.@com.jsni.client.Testjsnii::myInstanceField;
      }-*/;

    public void onModuleLoad() {
        bar(this,"Hello");
    }
}

它在控制台上没有打印任何内容,只有一个警告说:

  

[WARN] [testjsnii] - JSNI方法   '@ com.jsni.client.Testjsnii :: bar(Lcom / jsni / client / Testjsnii; Ljava / lang / String;)'返回> JavaScript对象(1)的值,但声明为void;它不应该返回一个>价值

我想知道是什么问题。

感谢您的帮助。

1 个答案:

答案 0 :(得分:3)

您实际上遇到了使用GWT DevMode插件的Chrome(10-dev)问题:http://code.google.com/p/google-web-toolkit/issues/detail?id=5778