调试IDEA脚本引擎中运行的Groovy脚本

调试IDEA脚本引擎中运行的Groovy脚本,groovy,intellij-idea,breakpoints,scriptengine,Groovy,Intellij Idea,Breakpoints,Scriptengine,在我的应用程序中,我将一个脚本文件从类路径加载到字符串中,然后将其传递到脚本引擎。但是,脚本文件中设置的断点不会触发。我怎样才能让它工作?我使用Intellij的想法 ScriptEngine engine = ...; String script = FileUtils.readFileToString(file); Bindings bindings = engine.createBindings(); Object result = engine.eval(script, bindings

在我的应用程序中,我将一个脚本文件从类路径加载到字符串中,然后将其传递到脚本引擎。但是,脚本文件中设置的断点不会触发。我怎样才能让它工作?我使用Intellij的想法

ScriptEngine engine = ...;
String script = FileUtils.readFileToString(file);
Bindings bindings = engine.createBindings();
Object result = engine.eval(script, bindings);

由于
ScriptEngine.eval()
方法只将脚本作为
字符串
或一般的
读取器
,因此我认为不可能实现这一点。
groovyScript EngineImpl
类将生成脚本名称并在运行时将其编译为类,这将使调试器很难(不可能?)知道哪些断点与正在运行的脚本关联

它可能不是您的解决方案,但是如果您改为使用
GroovyShell
调用脚本,那么它几乎可以开箱即用

例如:

File file = new File(scriptDir, "ScriptToRun.groovy");
Binding binding = new Binding();
Object result = new GroovyShell(binding).evaluate(file);
如果脚本不在根目录下,请记住在脚本中设置正确的包