在我的应用程序中,我将类路径中的脚本文件加载到String中,然后将其传递给ScriptEngine。 Howerver,脚本文件中设置的断点不会触发。我怎样才能使它工作?我使用Intellij IDEA。
ScriptEngine engine = ...;
String script = FileUtils.readFileToString(file);
Bindings bindings = engine.createBindings();
Object result = engine.eval(script, bindings);
答案 0 :(得分:0)
由于ScriptEngine.eval()
方法仅将脚本视为String
或通用Reader
,因此我认为无法实现此目标。 GroovyScriptEngineImpl
类将生成一个脚本名称并在运行时将其编译为一个类,这将使调试器很难(不可能?)知道哪个断点与正在运行的脚本相关联。
它可能不适合您,但如果您使用GroovyShell
调用脚本,那么它几乎可以开箱即用。
示例:
File file = new File(scriptDir, "ScriptToRun.groovy");
Binding binding = new Binding();
Object result = new GroovyShell(binding).evaluate(file);
请记住,如果脚本不在根目录中,请在脚本中设置正确的包。