【问题标题】:Grails - No signature of method is applicable for argument typesGrails - 没有方法签名适用于参数类型
【发布时间】:2014-11-30 10:03:24
【问题描述】:

我从 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;
}
}

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

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 设法编译项目,但不执行该方法。我假设我做错了什么。这里有什么想法吗?

【问题讨论】:

    标签: grails groovy


    【解决方案1】:

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

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

    尝试上述所有三个,如果该方法在其他地方有效,可能会有所帮助。

    【讨论】:

      【解决方案2】:

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

      我做错的是我没有在我调用服务的控制器中的方法顶部键入:“servicename”。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-11-02
        • 1970-01-01
        • 1970-01-01
        • 2017-06-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多