【发布时间】:2013-05-02 04:19:19
【问题描述】:
我正在尝试通过 JUnit 测试在 Eclipse 中调试 Groovy 脚本。 Groovy 代码是在 Tomcat 中运行的大型 Java 应用程序的一部分。由于各种原因,我们的系统设置为使用已编译的 JSR223 表达式。这是缩写代码sn-p:
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 中设置了断点,并且文件位于类路径中,调试时也不会遇到断点。我猜这不起作用,因为字符串格式的表达式与包含它的实际文件之间没有关联。那么有没有办法在字符串与其对应的文件名之间创建这种关联呢?如前所述,我需要使用 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 引擎直接加载文件。非常感谢有关如何使第一个示例工作的任何提示。谢谢。
【问题讨论】:
-
我忘了提到我在 Eclipse 的 Groovy 编译器设置中启用了“启用脚本文件夹支持”选项。
标签: eclipse debugging groovy scripting jsr223