我正在试验Nashorn并从Java代码调用js函数。我有一个WatchService,它重新加载已更改的文件并重新评估ScriptEngine
engine.eval(Files.newBufferedReader(Paths.get(scriptFile), StandardCharsets.UTF_8));
它似乎运行得相当不错,但是,有几次我在javascript文件中保存了毫无疑问的拼写错误并随后尝试调用函数
invoker.invokeFunction("printServiceReport", tesla);
导致抛出javax.script.ScriptException,从而导致我的运行代码被终止。寻找一种可行的解决方案来实时重新加载逻辑,而不会对我的应用程序产生负面影响。
答案 0 :(得分:1)
将每个代码文件的eval包装在try catch和invokes中。
如果需要,可以在重新加载时运行所有函数以查看是否发生错误 - 然后在发现错误时使用旧版本(如果在运行时检测到错误是不可接受的)。
当我们重新加载服务器端脚本时,我们会做类似的事情。