Grails - 方法的签名不适用于参数类型

时间:2014-11-30 10:03:25

标签: grails groovy

我从Grails开始(主要使用Eclipse插件)并且在Grails读取Java src文件时遇到了问题 - 无论是bin文件夹中的jar还是src /中的Java文件java文件夹。

我已经创建了一个示例,说明我如何从我的控制器调用Java静态方法,并且由于某种原因,参数类型存在问题。这是控制器:

def attempt = {
    int counter = 20
    int val1 = 1
    int val2 = 1
    def list = Replicate.create(counter, val1, val2)
    render list.size()
}

这是src / Java文件夹中的Java文件:

public class Replicate {

public static LinkedList<Pair<Integer, Integer>> create (int count, int val1, int val2){

    LinkedList<Pair<Integer, Integer>> list = new LinkedList<Pair<Integer,Integer>>();

    for (int i = 0; i < count; i++){
        list.add(new Pair<Integer, Integer>(val1, val2));
    }

    return list;
}
}

当我尝试加载Controller方法的页面时,我得到:

URI:
/clive-toolbox/cliveServices/attempt
Class:
groovy.lang.MissingMethodException
Message:
No signature of method: static tst.Replicate.create() is applicable for argument types:     (java.lang.Integer, java.lang.Integer, java.lang.Integer) values: [20, 1, 1] Possible solutions:     grep(), iterator()

突出显示为错误的行是(在控制器中):

def list = Replicate.create(counter, val1, val2)

在其他情况下,以相同的方式工作,Grails设法编译项目,但只是没有执行该方法。我假设我做错了什么。这里有什么想法吗?

2 个答案:

答案 0 :(得分:3)

您的异常正确地指出控制器无法使用方法Replicate.create()。 请检查以下内容,

1. You have imported the class right.
2. Package name is correct.
3. You have cleaned your application.

尝试上面提到的所有三个,如果该方法在其他地方工作,它可能会有所帮助。

答案 1 :(得分:0)

尝试从控制器调用服务方法时收到了同样的错误。

我做错了是我没有输入:“servicename”位于我从中调用服务的控制器的方法顶部。