我从 Grails 开始(主要使用 Eclipse 插件),并且在 Grails 读取 Java src 文件时遇到了问题 - 无论是 bin 文件夹中的 jar,还是 src/java 文件夹中的 Java 文件。
我创建了一个示例,说明如何从 Controller 调用 Java 静态方法,但由于某种原因,参数类型存在问题。这是 Controller :
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()
突出显示的错误行是这样的(在 Controller 中):
def list = Replicate.create(counter, val1, val2)
在其他情况下,以同样的方式工作,Grails 设法编译项目,但只是不执行该方法。我想我做错了什么。这里有什么想法吗?
最佳答案
您的异常正确地表明方法 Replicate.create() 对 Controller 不可用。 检查以下内容,
1. You have imported the class right.
2. Package name is correct.
3. You have cleaned your application.
尝试上面提到的所有三种方法,如果该方法在其他地方有效,可能会有所帮助。
关于Grails - 没有方法签名适用于参数类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27212059/