scala如何像groovy那样在java里直接读取源码然后执行
ynstudio
2010-05-10
我们在做一个CMS系统,希望能够像使用JSP一样,不用重启tomcat,也不用主动编译代码,来写一个类,然后就可以直接使用。看到groovy可以如下处理 String className = "xxx";//某个groovy类文件路径 GroovyScriptEngine gse = new GroovyScriptEngine(//脚本文件根路径); Class groovyClass = gse.loadScriptByName(className); Object o = groovyClass.newInstance(); o.xxxx(); 在scala中如何实现类似效果? |
|
vii779
2010-05-10
import scala.tools.nsc.GenericRunnerSettings import scala.tools.nsc.Interpreter val setting = new GenericRunnerSettings(null) //setting 会有很多配置项,一般不需要设置,详细信息查看api文档 val loader = getClass.getClassLoader.asInstanceOf[URLClassLoader] setting.classpath.value += loader.getURLs.map {_.toString.replace("file:/", "")}.mkString(File.pathSeparator, File.pathSeparator, "") //classpath可根据情况设置,设置不当会报class not found 错误,需要根据你的开发环境做合适的调整。 val preter = new Interpreter(setting) preter.interpret("你的代码") Interpreter编译速度比较慢,而且比较耗内存,需要权衡使用,适当的时候要释放Interpreter占用的内存。 |
|
ynstudio
2010-05-11
多谢,我再了解一下如何“适当的时候释放Interpreter占用的内存。”
|