調用Java方法我試圖從谷歌的例子在本頁面: http://code.google.com/docreader/#p=google-web-toolkit-doc-1-5&s=google-web-toolkit-doc-1-5&t=DevGuideJavaFromJavaScriptGWT問題,從JSNI
我希望能夠從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) /*-{
[email protected]::instanceFoo(Ljava/lang/String;)(s);
[email protected]::instanceFoo(Ljava/lang/String;)(s);
@com.jsni.client.Testjsnii::staticFoo(Ljava/lang/String;)(s);
var val = [email protected]::myInstanceField;
}-*/;
public void onModuleLoad() {
bar(this,"Hello");
}
}
不打印輸出在控制檯上,但只有華林,說:
[WARN] [testjsnii] - JSNI方法 「@com .jsni.client.Testjsnii :: bar(Lcom/jsni/client/Testjsnii; Ljava/lang/String;)'returned>一個類型爲JavaScript對象(1)的值,但被聲明爲void;它不應該返回一個>值根本
我不知道是什麼問題。
感謝您的幫助。
你可能看不到輸出到System.out - 嘗試使用GWT.log(),而不是看是否方法正在被調用。 – 2011-01-05 21:35:10
我只是直接複製你的代碼,只修改包和System.out到logger.info(),它工作得很好,我甚至沒有得到你提到的警告信息。 – LINEMAN78 2011-01-05 22:14:32