3

私のアプリでは、スクリプト ファイルをクラスパスから文字列に読み込み、それを ScriptEngine に渡します。ただし、スクリプト ファイルに設定されたブレークポイントはトリガーされません。どうすればそれを機能させることができますか?Intellij IDEA を使用しています。

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

1 に答える 1

1

ScriptEngine.eval()メソッドはスクリプトを aStringまたは genericとしてのみ受け取るためReader、これを達成することはできないと思います。クラスはGroovyScriptEngineImplスクリプト名を生成し、実行時にそれをクラスにコンパイルします。これにより、デバッガーが実行中のスクリプトに関連付けられているブレークポイントを知ることが難しくなります (不可能?)。

これは解決策ではないかもしれませんが、代わりに を使用してスクリプトを呼び出すとGroovyShell、そのままでほとんど問題なく動作します。

例:

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

ルートにない場合は、スクリプトに正しいパッケージを設定することを忘れないでください。

于 2013-06-27T18:27:10.187 に答える