1

我需要从我的 Java 应用程序中运行一些外部代码,这些代码将经常更新并且与应用程序的其余部分正交。由于我不会为每次代码更改(以及其他原因)重新部署整个应用程序,因此我们选择对此代码使用groovy,并将其存储在文件系统或数据库中。

根据我了解的文档,我有两种运行代码的方法 - 使用GroovyShellGroovyClassLoader(eval 不适合这里)

每种方法的优缺点是什么?

4

2 回答 2

3

GroovyShell 在下面使用 GroovyClassLoader。除非您需要仅由 GroovyClassLoader 提供的功能,否则请使用 GroovyShell。

于 2009-10-04T21:58:52.017 回答
2

GroovyShell 使用默认的类加载器,直到您在自定义类路径的脚本中加载某些内容,然后它会切换到自定义的 GroovyClassLoader,这可能会导致加载一些 jdbc 驱动程序或 jndi 项等问题......所以,如果您的默认类加载器已经有它需要的类路径 和 ,并且如果您可以避免在 Java 代码中实例化一个新的 GroovyClassLoader 对象,那么使用简单的 GroovyShell 加载一个 shell 脚本将使用默认的类加载器,这样您会做得更好。

希望我理解你的问题。

于 2011-12-07T22:57:47.640 回答