2016-09-26 70 views
1

我有一个像Groovy脚本:参数传递给常规

import groovy.sql.Sql 

Object execute(def params = null) { 

    def sql = new DBUtils().getConnection() 

    println "sql params : " + params 

    ... 
} 

和Java类会调用这个脚本,如:

Class scriptClass = new GroovyClassLoader().parseClass(new File(url)) ; 

Object scriptInstance = scriptClass.newInstance() ; 

String param = {"test"}; 

Object obj = scriptClass.getDeclaredMethod("execute", new Class[] {}) 
    .invoke(scriptInstance, new Object[] {param} ) ; 

我已经试过各种格式的论点,但没有的他们工作。上述示例将抛出java.lang.IllegalArgumentException: wrong number of arguments

有什么想法?赞赏。

+0

抛出异常在哪里? – RamenChef

回答

1

你不正确指定的参数类型,它应该是:事实上

String param = "test"; 
Object obj = scriptClass.getDeclaredMethod("execute", new Class[]{Object.class}) 
    .invoke(scriptInstance, new Object[]{param}); 

,如果你叫getDeclaredMethod("execute", new Class[]{}),你会得到一个方法execute没有参数所以它不兼容你正在尝试使用一个参数invoke