调试IDEA脚本引擎中运行的Groovy脚本
在我的应用程序中,我将一个脚本文件从类路径加载到字符串中,然后将其传递到脚本引擎。但是,脚本文件中设置的断点不会触发。我怎样才能让它工作?我使用Intellij的想法调试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
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);
如果脚本不在根目录下,请记住在脚本中设置正确的包