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