【问题标题】:Groovy Shell in Grails includes my grails .lib/ folderGrails 中的 Groovy Shell 包括我的 grails .lib/ 文件夹
【发布时间】:2011-09-13 20:50:23
【问题描述】:

我有一个 grails 应用程序,它负责运行上传的 groovy 文件。然后我的应用程序会查找上传的 groovy 文件,然后使用 GroovyShell 执行它们。

似乎我的 grails lib 文件夹中包含的任何 .jar 文件也被添加到了我的 GroovyShell 的类路径中(这对我不利)。有没有办法获得不包含外部引用的“干净”类路径?

例子:

MyGrailsApp/lib/my-java-code.jar

my-java-code.jar 包含一个名为 com.ClassInExternalLib 的类

GroovyService{

    def runTask(){
        GroovyShell shell = new GroovyShell()
        shell.evaluate("assert new com.ClassInExternalLib() != null")

    }

}

【问题讨论】:

    标签: java grails groovy


    【解决方案1】:

    只需将 ClassLoader 设置为 Classloader,它只包含您在构建 GroovyShell 时希望向 GroovyShell 公开的库。请参阅Groovy API documentation 了解更多信息。

    【讨论】:

    • 感谢您的回复。你推荐什么样的类加载器?我应该使用空的 URLClassLoader 吗?除了核心 groovy 之外,我不想要任何外部引用。
    • @Michael J. Lee:DZone 上的这篇文章谈到了如何获得一个空的 ClassLoader。它还指出,如果要公开核心 Groovy,则需要在构造 ClassLoader 时包含它。 groovy.dzone.com/news/class-loading-fun-groovy
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-20
    • 1970-01-01
    相关资源
    最近更新 更多