`
ivan19861025
  • 浏览: 41028 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

java调用groovy脚本

    博客分类:
  • Java
阅读更多
import groovy.lang.GroovyClassLoader;

import java.lang.reflect.Method;

public class GroovyUtils {
	
	public static void main(String[] args) {
		StringBuffer scriptBuff = new StringBuffer();
		String enter = "\r\n";
		scriptBuff.append("class HelloWorld {").append(enter);
		scriptBuff.append("    String sayHello(String name){").append(enter);
		scriptBuff.append("        return \"hello, \" + name").append(enter);
		scriptBuff.append("    }").append(enter);
		scriptBuff.append("}").append(enter);
		System.out.println(scriptBuff.toString());
		
		GroovyClassLoader groovyCl = new GroovyClassLoader(GroovyUtils.class.getClassLoader());
		Class groovyClass = groovyCl.parseClass(scriptBuff.toString());
		try {
			Object obj = groovyClass.newInstance();
			Method meth = obj.getClass().getMethod("sayHello", new Class[]{String.class});
			System.out.println(meth.invoke(obj, new Object[]{"张三"}));
		} catch (Exception ex) {
			ex.printStackTrace();
		} 
		
	}
	
}

控制台会打出
class HelloWorld {
    String sayHello(String name){
        return "hello, " + name
    }
}

hello, 张三

另一种方式的调用
long t1 = System.currentTimeMillis();
		String script = "i = new HashMap(); i.put('key1', '1'); return i;";
		
		GroovyShell gs = new GroovyShell();
		Object obj = gs.evaluate(script);
		System.out.println(obj);
		
		long t2 = System.currentTimeMillis();
		System.out.println(t2 - t1 + "ms");
		
		System.out.println(gs.evaluate(script));
		
		System.out.println(System.currentTimeMillis() - t2 + "ms");
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics