groovy-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "杨文强" <166505...@qq.com>
Subject about methodMissing
Date Mon, 11 Jan 2016 09:32:47 GMT
hi,
     I am a fresh person for groovy. here is the code I have written:


       public class TestAction extends ActionBase {


	private static final long serialVersionUID = 8763503930833969428L;


	public void Test(){
		
		JSONObject params = requestParams != null? JSONObject.fromObject(requestParams): new JSONObject();
	
		try {
			ClassLoader parent = getClass().getClassLoader();
			
			GroovyClassLoader loader = new GroovyClassLoader(parent); 
			
			String classText = "class DynamicGroovyClass { def methodMissing(String name, args) {println
\"You called $name with $args\"  args.size()  } }";
			
			@SuppressWarnings("rawtypes")
			Class groovyClass = loader.parseClass(classText);
			
			GroovyObject groovyObject = (GroovyObject) groovyClass.newInstance(); 
			
			Object [] args = {"hello", "world", "feel", "happy"};
			
			Object result = groovyObject.invokeMethod("run", args);
			
			System.out.println("Received:" + result);
			
			sendJsonFormattedData(params.toString());
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}




      when I run the code, it throws an exception:
        You called run with [hello, world, feel, happy]
        java.lang.NullPointerException: Cannot get property 'args' on null object
	at org.codehaus.groovy.runtime.NullObject.getProperty(NullObject.java:60)
	at org.codehaus.groovy.runtime.InvokerHelper.getProperty(InvokerHelper.java:172)
	at org.codehaus.groovy.runtime.callsite.NullCallSite.getProperty(NullCallSite.java:47)
	at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callGetProperty(AbstractCallSite.java:296)
	at DynamicGroovyClass.methodMissing(script1452504513039443064905.groovy:1)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)


	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:93)
	at groovy.lang.MetaClassImpl.invokeMissingMethod(MetaClassImpl.java:936)
	at groovy.lang.MetaClassImpl.invokePropertyOrMissing(MetaClassImpl.java:1259)
	at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1212)
	at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1019)
	at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:810)
	at DynamicGroovyClass.invokeMethod(script1452504513039443064905.groovy)
	at com.shanghe.action.TestAction.Test(TestAction.java:31)



      so. why groovy can't get property args but it can print args? how to resolve the exception?
Mime
View raw message