Проблемы динамической загрузки 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()
Другие вопросы по тегам