package com.taobao.easyweb.core.groovy; import groovy.lang.GroovyClassLoader; import groovy.lang.GroovyCodeSource; import groovy.lang.GroovyObject; import org.codehaus.groovy.control.CompilerConfiguration; import org.codehaus.groovy.tools.FileSystemCompiler; import java.io.File; import java.util.ArrayList; import java.util.List; /** * User: jimmey/shantong * DateTime: 13-4-23 ����5:40 * <p/> * groovy��������� */ public class GroovyCompile { public static void main(String[] v) throws Exception { String classpath = "/Users/jimmey/easyweb/classes"; CompilerConfiguration configuration = new CompilerConfiguration(); configuration.setTargetDirectory(classpath); FileSystemCompiler compiler = new FileSystemCompiler(configuration); List<String> list = new ArrayList<String>(); list.add("/Users/jimmey/workspace/usp/uspapps/groovyloader/src/main/java/before/Index.groovy"); list.add("/Users/jimmey/workspace/usp/uspapps/groovyloader/src/main/java/bean/Bean.groovy"); list.add("/Users/jimmey/workspace/usp/uspapps/groovyloader/src/main/java/beforebean/CBean.groovy"); list.add("/Users/jimmey/workspace/usp/uspapps/groovyloader/src/main/java/XBean.groovy"); list.add("/Users/jimmey/workspace/usp/uspapps/groovyloader/src/main/java/Script.groovy"); try { compiler.compile(list.toArray(new String[list.size()])); } catch (Exception e) { e.printStackTrace(); } // MyGroovyClassLoader groovyClassLoader = new MyGroovyClassLoader(); GroovyClassLoader groovyClassLoader = new GroovyClassLoader(); groovyClassLoader.addClasspath(classpath); Class<?> clazz = groovyClassLoader.loadClass("before.Index"); System.out.println(clazz.getClassLoader()); System.out.println(groovyClassLoader.toString()); System.out.println(clazz); System.out.println(groovyClassLoader.loadClass("XBean")); System.out.println(groovyClassLoader.loadClass("Script")); // Class<?> xx = groovyClassLoader.loadClass("Script"); // GroovyObject obj = (GroovyObject)xx.newInstance(); // if(obj instanceof Script){ // System.out.println( InvokerHelper.invokeMethod(obj,"exe",null)); // } // GroovyClassLoader loader = new GroovyClassLoader(groovyClassLoader); File file = new File("/Users/jimmey/workspace/usp/uspapps/groovyloader/src/main/java/before/Index.groovy"); GroovyCodeSource codeSource = new GroovyCodeSource(file, "GBK"); /** * ���ﲻ��groovy.lang.MyGroovyClassLoader.parseClass(File)�� * ��ΪGroovyCodeSourceĬ��cachable=true */ // groovyResourceLoader.setApp(app); Class<?> scriptClass = loader.parseClass(codeSource, false); System.out.println(scriptClass.getClassLoader()); GroovyObject object = (GroovyObject) scriptClass.newInstance(); System.out.println(object.invokeMethod("test", null)); } }