import groovy.lang.GroovyClassLoader; import groovy.lang.GroovyObject; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.runners.MockitoJUnitRunner; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.io.File; import java.io.IOException; import static org.junit.Assert.*; import static org.mockito.Mockito.spy; public class GroovyCompiler { private static final Logger LOG = LoggerFactory.getLogger(GroovyCompiler.class); /** * Compiles Groovy code and returns the Class of the compiles code. * * @param sCode * @param sName * @return */ public Class compile(String sCode, String sName) { GroovyClassLoader loader = getGroovyClassLoader(); LOG.warn("Compiling filter: " + sName); Class groovyClass = loader.parseClass(sCode, sName); return groovyClass; } /** * @return a new GroovyClassLoader */ GroovyClassLoader getGroovyClassLoader() { return new GroovyClassLoader(); } /** * Compiles groovy class from a file * * @param file * @return * @throws java.io.IOException */ public Class compile(File file) throws IOException { GroovyClassLoader loader = getGroovyClassLoader(); Class groovyClass = loader.parseClass(file); return groovyClass; } @RunWith(MockitoJUnitRunner.class) public static class UnitTest { @Test public void testLoadGroovyFromString() { GroovyCompiler compiler = spy(new GroovyCompiler()); try { String code = "class test { public String hello(){return \"hello\" } } "; Class clazz = compiler.compile(code, "test"); assertNotNull(clazz); assertEquals(clazz.getName(), "test"); GroovyObject groovyObject = (GroovyObject) clazz.newInstance(); Object[] args = {}; String s = (String) groovyObject.invokeMethod("hello", args); assertEquals(s, "hello"); } catch (Exception e) { assertFalse(true); } } } }
相关推荐
groovy-loader-v2 load groovy scripts in file directory dynamically 简介 动态加载指定目录下的groovy脚本,并将其注册为groovy bean,放置于...通过扫描监听指定路径下groovy文件的变更,来接受groovy脚本的
groovy-loader load groovy scripts in file directory dynamically ...spring配置文件使用标签lang:groovy,通过指定script-source来加载指定路径下的groovy脚本,通过refresh-check-delay属性来定时
下载的资源文件中,封装了并发计算以及内存溢出解决方案的工具类GroovyEngine.java,调用示例: GroovyEngine engine = GroovyEngine.getInstance(); engine.put("a",1); engine.put("b",2); Object v1 = engine....
Java访问权限控制,为Java操作文件、写入文件分配合适的权限,定义写到文件的信息、定义文件,输出到c:/hello.txt、写信息到文件、关闭输出流。 Java绘制图片火焰效果 1个目标文件 摘要:Java源码,图形操作,火焰...
Java访问权限控制,为Java操作文件、写入文件分配合适的权限,定义写到文件的信息、定义文件,输出到c:/hello.txt、写信息到文件、关闭输出流。 Java绘制图片火焰效果 1个目标文件 摘要:Java源码,图形操作,火焰...
ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...
Java类加载顺序笔试题 Nicobar:Java 的动态脚本和模块加载器框架 Nicobar 是一个 Java 动态脚本框架,由强大的基于 . 脚本可以是源代码,用 JVM 兼容语言(如 Groovy)编写,也可以是编译后的字节码,以 .class ...
Nicobar 是 Java 的动态脚本和模块加载器框架。Nicobar 是 Java 动态脚本框架,由一个基于 JBoss Modules 的强大的模块化加载系统驱动。public void initializeNicobar() throws Exception { // create the...
ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...
ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...
ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...
ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...
ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...
ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...
ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...
ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...
ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...
ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...
ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...