我从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设法编译项目,但只是没有执行该方法。我假设我做错了什么。这里有什么想法吗?
答案 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”位于我从中调用服务的控制器的方法顶部。