3

我正在从 scala 动态运行 groovy 脚本,但是在调用 Groovy 脚本引擎的 loadScriptByName 方法时编译 groovy 脚本需要一些时间。

自从我上次运行应用程序以来,从我的应用程序加载和编译的大多数 groovy 脚本都没有改变,所以我想每次都不需要编译它们。

如果它们没有任何更改,是否有任何方法可以存储已编译的 groovy 脚本并从我的应用程序运行它们?我知道 groovy 脚本引擎缓存编译的脚本如果您在同一个 groovy 脚本上调用 loadScriptBynName 方法两次或更多次,但是当我关闭我的应用程序时这些缓存就消失了。也许它将缓存的脚本存储在内存中?

4

1 回答 1

3

采用:

String script = ""     // some script
string scriptName = "" // unique script name

GroovyClassLoader groovyClassLoader = GroovyClassLoader() 
GroovyCodeSource gcs = new GroovyCodeSource(script, scriptName, "/app/script");
Class<?> executableClass = groovyClassLoader.parseClass(gcs, true);
于 2012-08-01T09:16:38.057 回答