java代码中执行groovy代码
package test;
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;
public class ScriptExcuteUtil {
public ScriptExcuteUtil() {
}
/**
* @param args
*/
public static void main(String[] args) {
ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByName("groovy");
try {
System.out.println("calling groovy from java start");
engine.put("name", "VerRan");
engine.eval("println \"${name}\"+\"你好\";name=name+'!'");
System.out.println(engine.get("name"));
System.out.println("calling groovy from java end");
engine.eval("");
} catch (ScriptException e) {
e.printStackTrace();
}
}
}
package test;
import groovy.lang.GroovyClassLoader;
import java.io.File;
public class InvokeGroovy {
public static void main(String[] args) {
ClassLoader cl = new InvokeGroovy().getClass().getClassLoader();
GroovyClassLoader groovyCl = new GroovyClassLoader(cl);
try {
// 从文件中读取
Class groovyClass = groovyCl.parseClass(new File(
"C:\\mysource2\\GroovyLearn\\groovy\\fist\\Foo.groovy"));
Class groovyClass2 = groovyCl
.parseClass("package org.openjweb.groovy; \r\n import test.IFoo;\r\n class Foo implements IFoo {public Object run(Object foo) {return ((Integer)foo).intValue()+3}}");
IFoo foo = (IFoo) groovyClass.newInstance();
System.out.println(foo.run(new Integer(2)));
IFoo foo2 = (IFoo) groovyClass2.newInstance();
System.out.println(foo2.run(new Integer(2)));
} catch (Exception e) {
e.printStackTrace();
}
}
}