Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/gwt/3.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
GWT:“我的朋友们;无法识别的调用格式";:这是什么意思?_Gwt_Interop - Fatal编程技术网

GWT:“我的朋友们;无法识别的调用格式";:这是什么意思?

GWT:“我的朋友们;无法识别的调用格式";:这是什么意思?,gwt,interop,Gwt,Interop,我得到这个错误: public void query(String sql, QueryResult queryResult) { q = queryResult; realQuery(sql, conString); } public static native void realQuery(String sql, String conString) /*-{ $wnd.pg.connect(conString, function(err, client) {

我得到这个错误:

public void query(String sql, QueryResult queryResult) {
    q = queryResult;
    realQuery(sql, conString);
}

public static native void realQuery(String sql, String conString) /*-{
    $wnd.pg.connect(conString, function(err, client) {
        client.query(sql, function(err, result) {
            console.log(result.rows);
            var code = "@db.tud.bp.werkstatt.client.PgClient::result(Ljava/lang/String;)(" + '"' + JSON.stringify(result.rows).replace('"','\\"') + '"' + ");";
            console.log(code);
            eval(code);
        });
    });
}-*/;
“无法识别的呼叫格式”是什么意思?为什么我在搜索时没有得到任何谷歌结果

我怀疑我在第3行以错误的方式调用JSNI函数。但我可以遵守文件中规定的所有规则

编辑

这项工作:

com.google.gwt.event.shared.UmbrellaException: Exception caught: (Error) 
@de.tud.bp.werkstatt.client.PgClient::realQuery(Ljava/lang/String;Ljava/lang/String;)
([string: 'SELECT age FROM person WHERE name='Ayeb'', string: '/rest/query']): 
  unrecognized calling format
    at com.google.gwt.event.shared.HandlerManager.fireEvent(HandlerManager.java:129)
这并不是:

public static native void realQuery(JavaScriptObject parsed) /*-{
    var sql = parsed[0];
    var conString = parsed[1];
    $wnd.pg.connect(conString, function(err, client) {
    });
}-*/;

您不能
eval
JSNI调用到Java中——这些代码不是真正的JavaScript,而是JS和Java在GWT中交互的一部分。最终的工作方式是重写这些调用,以便它们调用真正的JavaScript函数。

您的
结果
方法是静态方法吗?它是否只接收一个字符串作为参数?如果是这样,您的
“+”+JSON.stringify(result.rows).replace(“”、“\\”)+“+”
可能就是问题所在。@GilbertoTorrezan:据我所知,错误是在函数调用之前抛出的。result是这样声明的:
staticvoidresult(stringjson)
没有eval你有什么?只是日志声明?包裹(即伞内例外)错误是什么?您显然也在调用
query
方法,就好像它是静态的一样(前面没有
实例
),但它不是静态的。这和评估都没有真正意义,应该在问题中澄清。还有一点,在我添加注释之前-您只列出JSNI中
query
method sig中的两个参数中的一个-QueryResult在哪里?通过“without the eval”,我的意思是我用一个正常的JSNI函数调用替换了它。此处的完整堆栈跟踪:。eval来自一个早期的迭代,我想让它更具动态性,但现在没关系,我只需要让调用首先工作。PgClient.java:Pg.java(QueryResult在这里):(在发布的源代码中,我尝试传递一个JavaScriptObject,但它似乎对我传递的内容没有多大影响。)“查询”在JS代码中,不是来自Java代码的“查询”。
public static native void realQuery(JavaScriptObject parsed) /*-{
    var sql = parsed[0];
    var conString = parsed[1];
    $wnd.pg.connect(conString, function(err, client) {
        client.query(sql, function(err, result) {
            console.log(result.rows);
        });
    });
}-*/;