Отладка скриптов Groovy, работающих в ScriptEngine из IDEA

В моем приложении я загружаю файл сценария из пути к классам в строку, а затем передаю его в ScriptEngine. Однако точка останова, установленная в файле скрипта, не срабатывает. Как я могу заставить его работать? Я использую IntelliJ IDEA.

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

person ltebean    schedule 21.05.2013    source источник


Ответы (1)


Поскольку метод ScriptEngine.eval() принимает сценарий только как String или как общий Reader, я не думаю, что это возможно. Класс GroovyScriptEngineImpl сгенерирует имя сценария и скомпилирует его в класс во время выполнения, из-за чего отладчику будет сложно (невозможно?) узнать, какие точки останова связаны с работающим сценарием.

Возможно, это не решение для вас, но если вместо этого вы вызовете скрипт, используя GroovyShell, то он в значительной степени будет работать из коробки.

Пример:

File file = new File(scriptDir, "ScriptToRun.groovy");
Binding binding = new Binding();
Object result = new GroovyShell(binding).evaluate(file);

Только не забудьте установить правильный пакет в скрипте, если он не находится в корне.

person Steinar    schedule 27.06.2013