0

我正在将旧代码从 JDK 8 迁移到 JDK 12。

在这个过程中,我注意到使用脚本引擎importPackage时不存在。用于脚本引擎"graal.js"时存在。"javascript"

有什么方法可以实现相同的功能"graal.js"吗?GraalJS 存储库上的 Nashorn 迁移文档没有涵盖这一点。

4

1 回答 1

4

importPackage最初来自犀牛。当明确要求仅使用 Rhino/Mozilla 兼容性时,即使 Nashorn 也支持它load("nashorn:mozilla_compat.js");,请参阅Nashorn 文档中的Rhino 迁移指南

Graal.js 有 Nashorn 兼容模式,它支持load("nashorn:mozilla_compat.js");这种模式。

所以,你可以使用类似的东西

System.setProperty("polyglot.js.nashorn-compat", "true");
ScriptEngine engine = new ScriptEngineManager().getEngineByName("graal.js");
System.out.println(engine.eval("load('nashorn:mozilla_compat.js'); importPackage('java.awt'); new Point();"));

(它打印java.awt.Point[x=0,y=0]显示包java.awt已成功导入)。

于 2019-08-12T10:03:04.063 回答