graal.js 脚本引擎中 Nashorn 的 importPackage 的等价物
Equivalent of Nashorn's importPackage in graal.js script engine
我正在将旧代码从 JDK 8 迁移到 JDK 12。
在这个过程中,我注意到在使用"graal.js"
脚本引擎时importPackage
并不存在。当脚本引擎使用 "javascript"
时存在。
有什么方法可以实现与 "graal.js"
相同的功能吗? GraalJS 存储库上的 Nashorn 迁移文档没有涵盖这一点。
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
导入成功)
我正在将旧代码从 JDK 8 迁移到 JDK 12。
在这个过程中,我注意到在使用"graal.js"
脚本引擎时importPackage
并不存在。当脚本引擎使用 "javascript"
时存在。
有什么方法可以实现与 "graal.js"
相同的功能吗? GraalJS 存储库上的 Nashorn 迁移文档没有涵盖这一点。
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
导入成功)