2016-09-26 67 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