我在Eclipse中创建了一个Groovy项目。 我想构建一个可执行jar,将我的一些groovy文件源保存在jar之外,这样它们就可以在运行时进行修改和重新加载。
我知道我可以使用GroovyScriptEngine执行此操作:
Class modelClass = new GroovyScriptEngine( "path_to_file" ).loadScriptByName( "Model.groovy" ) ;
Object modelInstance = modelClass.newInstance() ;
现在,我的问题是:是否可以简单地,例如在我的主类中使用:
import Model
class Main {
static void main(String[] args) {
Model model = new Model(args)
...
}
我希望我的问题足够明确...... 非常感谢你的帮助!
答案 0 :(得分:0)
如果你的jar在groovy的上下文中,那么你可以添加到带有groovy文件(类)的classpath文件夹。 groovy classloader在访问时自动编译它们。
否则创建一个groovy引擎,使用groovy文件添加到classpath目录..
答案 1 :(得分:0)
必须编译它们。如果你把它们放在jar之外,但是在你的类路径中,你必须将它们编译成.class文件,系统才能把它们拿起来。
最好的办法是使用你提到的ScriptEngine在内部“编译”它们(不保存类)。这使得.jar中的类很难灵活地访问外部groovy脚本,但这可能是最好的。