Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从JSNI调用Java方法_Java_Javascript_Gwt_Jsni - Fatal编程技术网

从JSNI调用Java方法

从JSNI调用Java方法,java,javascript,gwt,jsni,Java,Javascript,Gwt,Jsni,我想从JSNI变量successHandler()调用Java方法test()。然而,我得到了一个错误 [ERROR] - Line 110: Missing qualifier on instance method 'com.gw.myProject.client.presenter.payments.PaymentProgramPresenter.test' 原始代码: public static native void purchase(String token) /*-{

我想从JSNI变量
successHandler()
调用Java方法
test()。然而,我得到了一个错误

[ERROR] - Line 110: Missing qualifier on instance method 'com.gw.myProject.client.presenter.payments.PaymentProgramPresenter.test'
原始代码:

public static native void purchase(String token) /*-{

      var successHandler = function(status){ // Success handler
        return @com.gw.myProject.client.presenter.payments.PaymentProgramPresenter::test()();
      } 
      var failureHandler = function(status){ // Failure handler
        // $wnd.alert('testing');
      }

      $doc.purchaseAction(token, successHandler, failureHandler);
    }-*/;

    public void test() {
        this.onHide();
    }
您的
test()
不是静态的。因此,您需要将其设置为静态,或者指定一个实例,或者将购买设置为非静态

(此错误是GWT版本的“
无法从类型TypeName
静态引用非静态方法methodName()”)

你可以在网站上找到一个真正好的教程

再来一个提示。如果在JSNI中创建javascript回调,请使用en$entry()函数包装它们:

$doc.purchaseAction(token,$entry( successHandler ), $entry( failureHandler));
这将启用GWT uncaughtExceptionHandler

$doc.purchaseAction(token,$entry( successHandler ), $entry( failureHandler));