我有一个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")
}
}
答案 0 :(得分:3)
只需将ClassLoader设置为Classloader,它只包含在构造GroovyShell时希望向GroovyShell公开的库。有关详细信息,请参阅Groovy API documentation。