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(); } }