package groovy;
import org.codehaus.groovy.jsr223.GroovyScriptEngineImpl;
import javax.script.CompiledScript;
import javax.script.Invocable;
import java.lang.reflect.Field;
/**
* @author linxz
* @version 1.0
* @date 2020/12/24 9:53
*/
public class TestRun {
public static void main(String[] args) throws Exception {
GroovyScriptEngineImpl scriptEngine=new GroovyScriptEngineImpl();
CompiledScript compiledScript=scriptEngine.compile("println(this.getClass().getName())\n" +
"\n" +
"void test(){\n" +
" println(111)\n" +
"}");
Field field =compiledScript.getClass().getDeclaredField("clasz");
field.setAccessible(true);
Object clazz= field.get(compiledScript);
Class clasz= (Class) clazz;
((Invocable)compiledScript.getEngine()).invokeMethod(clasz.newInstance(),"test");
}
}
java调用groovy,调用CompiledScript中的方法
于 2020-12-24 10:29:57 首次发布
关键词由CSDN通过智能技术生成