在graal.js脚本引擎中相当于Nashorn的importPackage

时间:2019-08-12 06:22:28

标签: java graalvm graaljs

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

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

有什么方法可以用"graal.js"实现相同的功能? GraalJS信息库中的Nashorn迁移文档未涵盖此内容。

1 个答案:

答案 0 :(得分:4)

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

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已成功导入)。