(Hibernate VO から DTO を生成するための) Eclipse コード ビルダーを拡張しようとしていますが、テンプレート システムに Groovy を使用しています。
groovy スクリプトを作成するために使用するコードは少し奇妙です (Groovy ドキュメントにあるものとは異なります) が、ほとんどの場合は機能します。
GroovyShell shell = new GroovyShell();
script = shell.parse(source);
じゃあ後で:
Binding binding = (bindings == null ? new Binding() : new Binding(bindings));
Script scriptInstance = InvokerHelper.createScript(script.getClass(), binding);
scriptInstance.setProperty("out", out);
scriptInstance.run();
out.flush();
これで、プロジェクトに直接含まれていないオブジェクトへの参照に到達するまで、これは問題なく機能します。スクリプトでは、処理しているクラスのプロパティを反復処理します。これを行うと、Groovy はすべてのメソッドを調べ、メソッド パラメーターの 1 つに対するクラス定義が見つからない場合は失敗します。この場合、Hibernate への参照を見つけると死んでしまいますが、もっと多くのことで失敗すると確信しています。彼らに何もする必要はありませんが、彼らが何であるかを知らずに生きることはできません.
スクリプトには、クラスパス情報を提供できるクラスローダーがないように見えるため、それをGroovyShellに提供しようとしました-違いはありません。
Groovy インタープリターが Jars を参照している私のプロジェクトを見つけられるように、これを修正する適切な方法は何ですか?