为了账号安全,请及时绑定邮箱和手机立即绑定

等同于 graal.js 脚本引擎中 Nashorn 的 importPackage

等同于 graal.js 脚本引擎中 Nashorn 的 importPackage

慕桂英4014372 2023-06-04 16:50:13
我正在将旧代码从 JDK 8 迁移到 JDK 12。在这个过程中,我注意到importPackage在使用脚本引擎时不存在"graal.js"。"javascript"用于脚本引擎时存在。有什么方法可以实现相同的功能"graal.js"吗?GraalJS 存储库上的 Nashorn 迁移文档没有涵盖这一点。
查看完整描述

1 回答

?
Helenr

TA贡献1780条经验 获得超3个赞

importPackage最初来自 Rhino。当仅使用明确请求 Rhino/Mozilla 兼容性时,甚至 Nashorn 也支持它load("nashorn:mozilla_compat.js");。

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


查看完整回答
反对 回复 2023-06-04
  • 1 回答
  • 0 关注
  • 294 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信