1、groovyShell 脚本语言运用,支持表达式及脚本文件:
def run(foo) {
?????? println 'Hello World!'
?????? x = 123
?????? foo * 10
}
run foo
?
public class TestGroovyShell {
?/**
? * @param args
? */
?public static void main(String[] args) {
??try {
???Binding binding = new Binding();
???binding.setProperty("foo",new Integer(2));
???GroovyShell shell = new GroovyShell(binding);
???
???Object value = shell.evaluate(new File("src/groovy/GroovyShellHellow.groovy"));
???System.out.println(value);
??} catch (CompilationFailedException e) {
???e.printStackTrace();
??} catch (IOException e) {
???e.printStackTrace();
??}
??? }
}
2、在Java中动态加载和运行Groovy代码
??
package groovy;
/**
?* @author zhangchao02
?*
?*/
public class talk{
?public String say(String talkContext) {
??System.out.println("my say:" + talkContext);
??return talkContext;
?}
}
public class TestGroovyShell {
?/**
? * @param args
? */
?public static void main(String[] args) {
??try {
???Binding binding = new Binding();
???binding.setProperty("foo",new Integer(2));
???GroovyShell shell = new GroovyShell(binding);
???
???Object value = shell.evaluate(new File("src/groovy/GroovyShellHellow.groovy"));
???System.out.println(value);
??} catch (CompilationFailedException e) {
???e.printStackTrace();
??} catch (IOException e) {
???e.printStackTrace();
??}
??? }
}
public class GroovyHelper {
??? private static final Logger logger = LoggerFactory.getLogger(GroovyHelper.class);
?private static GroovyClassLoader loader;
?static {
??ClassLoader cl = new GroovyHelper().getClass()
????.getClassLoader();
??loader = new GroovyClassLoader(cl);
?}
?private GroovyHelper() {
?};
?public static GroovyObject getGroovyObject(String filePath) {
??File groovyFile = new File(filePath);
??if(!groovyFile.exists()){
???logger.error("GroovyHelper getGroovyObject groovyFile is not exists filePath={}",filePath);
???return null;
??}
??
??GroovyObject groovyObject = null;
??try {
???loader.parseClass(groovyFile);
???Class<?> groovyClass = loader.parseClass(groovyFile);
???groovyObject = (GroovyObject) groovyClass.newInstance();
??} catch (Exception e) {
???e.printStackTrace();
??}
??return groovyObject;
?}
?public static Object invokeMethod(GroovyObject groovyObject,
???String paramString,Object paramObject) {
??Object result = groovyObject.invokeMethod(paramString,paramObject);
??return result;
?}
?
?public static Object invokeMethodShell(){
??Object result = null;
??return result;
?}
}
3、groovy 脚本引擎:
?public static void main(String[] args) { ??String[] roots? =?? new? String[]? {"src/groovy/"} ; ??try { ???GroovyScriptEngine gse? =?? new? GroovyScriptEngine(roots); ???Binding binding = new Binding(); ???binding.setProperty("foo",new Integer(2)); ???gse.run( "GroovyShellHellow.groovy",binding); ???System.out.println(binding.getVariable("x")); ???System.out.println(binding.getVariable("foo")); ??} catch (IOException e) { ???// TODO Auto-generated catch block ???e.printStackTrace(); ??} catch (ResourceException e) { ???// TODO Auto-generated catch block ???e.printStackTrace(); ??} catch (ScriptException e) { ???// TODO Auto-generated catch block ???e.printStackTrace(); ??} ?}