我试图为我的用户提供一种方法,通过动态加载他们的源文件来为主要的groovy应用程序提供插件 . 但他们的groovy文件包含import语句,我不知道如何使它们工作,即使有一个明显好的类路径 .
主应用程序是shell脚本bin / top.sh:
#!/bin/bash
groovy-2.4.1/bin/groovy -cp lib lib/Top.groovy
lib / Top.groovy类:
public class Top {
public static void main(String[] args) {
ClassLoader parent = getClass().getClassLoader()
GroovyClassLoader loader = new GroovyClassLoader(parent)
Class groovyClass = loader.parseClass(new File("UserPlugin.groovy"))
GroovyObject groovyObject = (GroovyObject) groovyClass.newInstance()
groovyObject.invokeMethod("run",args)
}
}
用户类UserPlugin.groovy:
// The following import can be found in the classpath
// passed by the shell script (under lib/, next to Top.groovy)
import Lib
class UserPlu