0

由于 Nashorn 已停产,我们目前正在尝试将我们的(仍然是 Java 8)应用程序(非常大的单体)从 Nashorn 更改为 GraalVM。由于该应用程序在多个项目中被用作库,而不是使用整个 GraalVM 运行时,我们决定只将必要的 jars 添加到类路径中(目前看来这是可行的)。

为了使用 GraalVM,我将所有出现的 getEngineByName 更改为 graal.js,如下所示:

ScriptEngineManager sem = new ScriptEngineManager(null);
scriptEngine = sem.getEngineByName("graal.js");

由于应用程序非常复杂,理解应用程序的各个方面都相对困难,我想知道是否有一种方法可以验证使用准备好的 JavaScript 字符串作为输入的 JavaScript 引擎?我的目标是编写一个单元测试来验证每个将 JavaScript 作为输入的方法,如果 GraalVM 真的被使用的话。

实现这一目标的最佳方法是什么?

4

1 回答 1

0

您可以将脚本引擎的类名与 com.oracle.truffle.js.scriptengine.GraalJSScriptEngine 进行比较,如下所示:

ScriptEngine  scriptEngine = new ScriptEngineManager().getEngineByName("graal.js");
            String engineName = scriptEngine.getClass().getName();
            boolean isGraalJS = engineName.equals("com.oracle.truffle.js.scriptengine.GraalJSScriptEngine");
            System.out.println(isGraalJS);
于 2021-11-24T08:19:27.350 回答