我正在将旧代码从JDK 8迁移到JDK 12。
在此过程中,我注意到在使用importPackage脚本引擎时不存在"graal.js"。它在为脚本引擎使用"javascript"时存在。
有什么方法可以用"graal.js"实现相同的功能吗?GraalJS存储库上的Nashorn迁移文档没有涵盖这一点。
发布于 2019-08-12 10:03:04
importPackage来自犀牛。即使是Nashorn也支持它,当仅使用load("nashorn:mozilla_compat.js");显式地请求Rhino/Mozilla兼容性时,请参阅Nashorn文档中的犀牛迁移指南。
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已成功导入)。
https://stackoverflow.com/questions/57456476
复制相似问题