Проблемы динамической загрузки Java-класса с Groovy
Я портирую Jelly-скрипт на Groovy, и я застрял на одной строчке кода из Jelly-скрипта, который реализует новый тег:
<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-адрес).
Так что вопрос в том, как мне создать экземпляр hudson.plugins.emailext.plugins
PS Старый Jelly-скрипт и новый Groovy-скрипт оба используются в качестве шаблонов электронной почты с плагином Jenkins Email-Ext. Сценарий Jelly работает, но я хочу его в Groovy.
1 ответ
Почему я всегда разбираюсь в этом сразу после публикации вопроса?
ClassLoader cl = it.class.getClassLoader()
def builder = cl.loadClass("hudson.plugins.emailext.plugins.ContentBuilder", true).newInstance()