我正在将一个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中使用它。
答案 0 :(得分:0)
为什么我在发布问题后总能弄明白?
ClassLoader cl = it.class.getClassLoader()
def builder = cl.loadClass("hudson.plugins.emailext.plugins.ContentBuilder", true).newInstance()