Проблемы с динамической загрузкой Java-класса с помощью Groovy - PullRequest
0 голосов
/ 31 декабря 2011

Я портирую 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).

Поэтому вопрос заключается в том, как мне создать экземпляр hudson.plugins.emailext.plugins

PS Старый скрипт Jelly и новый скрипт Groovy оба используются в качестве шаблонов электронной почты с плагином Jenkins Email-Ext .Сценарий Jelly работает, но я хочу его в Groovy.

1 Ответ

0 голосов
/ 31 декабря 2011

Почему я всегда это выясняю сразу после публикации вопроса?

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