使用Groovy动态加载Java类的问题

时间:2011-12-30 23:00:32

标签: groovy jenkins jelly

我正在将一个Jelly脚本移植到Groovy,我遇到了Jelly脚本中的一行代码,它实现了new标记:

<j:new var="builder" classLoader="${it.class.classLoader}" className="hudson.plugins.emailext.plugins.ContentBuilder"/>

我知道这是在加载一个类,但我不能让Groovy做同样的事情。我已经尝试了几种不同的方法,使用我发现的各种类加载器示例,但我总是得到错误,通常是“无法解析类”。一个问题是我不知道是否需要使用文件系统路径:

C:\Jenkins\plugins\email-ext\WEB-INF\classes\hudson\plugins\emailext\ContentBuilder.class

或者,如果我需要使用URL(我不知道文件的URL,也不知道如果我知道URL,Jenkins是否允许我访问该文件)。

所以问题是如何实例化 hudson.plugins.emailext.plugins

P.S。旧的Jelly脚本和新的Groovy脚本都被用作Jenkins Email-Ext plugin的电子邮件模板。 Jelly脚本可以工作,但我想在Groovy中使用它。

1 个答案:

答案 0 :(得分:0)

为什么我在发布问题后总能弄明白?

    ClassLoader cl = it.class.getClassLoader()
    def builder = cl.loadClass("hudson.plugins.emailext.plugins.ContentBuilder", true).newInstance()