JUnit テストから Eclipse で Groovy スクリプトをデバッグしようとしています。Groovy コードは、Tomcat で実行される大規模な Java アプリケーションの一部です。さまざまな理由から、システムはコンパイル済みの JSR223 式を使用するように設定されています。簡略化されたコード スニペットは次のとおりです。
GroovyScriptEngineImpl engine = new GroovyScriptEngineImpl();
Resource r =
new ClassPathResource("groovy/transformations/input/Foo.groovy");
String expression = IOUtils.toString(r.getInputStream());
CompiledScript script = engine.compile(expression);
String result = (String) script.eval(new SimpleBindings(bindings));
テストは正常に実行されますが、Foo.groovy にブレークポイントが設定されていて、ファイルがクラスパス上にあるにもかかわらず、デバッグ時にブレークポイントにヒットすることはありません。String 形式の式とそれを含む実際のファイルとの間に関連付けがないため、これは機能しないと思います。では、文字列とそれに対応するファイル名の間にこの関連付けを作成する方法はありますか? 前述のとおり、CompiledScript を使用する必要があります。補足として、このアプローチを使用すると、同じ Groovy スクリプトを使用してデバッガーでブレークポイントをヒットできました。
Resource r =
new ClassPathResource("groovy/transformations/input/Foo.groovy");
GroovyShell shell = new GroovyShell(new Binding(bindings));
String str = (String) shell.evaluate(r.getFile());
もちろん、この場合、Groovy エンジンはファイルを直接ロードします。最初の例を機能させる方法に関するヒントは大歓迎です。ありがとう。