我在此页面尝试了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;它不应该返回一个>价值
我想知道是什么问题。
感谢您的帮助。
答案 0 :(得分:3)
您实际上遇到了使用GWT DevMode插件的Chrome(10-dev)问题:http://code.google.com/p/google-web-toolkit/issues/detail?id=5778