2011-01-05 154 views
3

調用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;它不應該返回一個>值根本

我不知道是什麼問題。

感謝您的幫助。

+0

你可能看不到輸出到System.out - 嘗試使用GWT.log(),而不是看是否方法正在被調用。 – 2011-01-05 21:35:10

+1

我只是直接複製你的代碼,只修改包和System.out到logger.info(),它工作得很好,我甚至沒有得到你提到的警告信息。 – LINEMAN78 2011-01-05 22:14:32

回答