0

Jelly スクリプトを Groovy に移植していますが、新しいタグを実装する Jelly スクリプトの 1 行のコードで立ち往生しています。

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

これがクラスをロードしていることはわかっていますが、Groovy に同じことをさせることはできません。見つけたさまざまなクラスローダーの例を使用していくつかの異なる方法を試しましたが、通常は「クラスを解決できません」などのエラーが常に発生します。1 つの問題は、ファイル システム パスを使用する必要があるかどうかわからないことです。

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

または、URL を使用する必要がある場合 (ファイルへの URL がわからない場合や、URL がわかっている場合に Jenkins がファイルにアクセスできるかどうかもわかりません)。

問題は、 hudson.plugins.emailext.pluginsをインスタンス化する方法です。

PS 古い Jelly スクリプトと新しい Groovy スクリプトは、どちらもJenkins Email-Ext プラグインでメール テンプレートとして使用されています。Jelly スクリプトは機能しますが、Groovy で使用したいです。

4

1 に答える 1

0

質問を投稿した直後にいつもそれを理解するのはなぜですか?

    ClassLoader cl = it.class.getClassLoader()
    def builder = cl.loadClass("hudson.plugins.emailext.plugins.ContentBuilder", true).newInstance()
于 2011-12-30T23:45:57.323 に答える