我的项目使用了Nashorn Javascript引擎。我正在尝试迁移到java11,也从Nashorn迁移到Graal。我已经阅读了here,可以通过从JDK 11开始的标准JDK安装来使用graal。此外,我还阅读了Graal-SDK上传到Maven Central的信息,并且有Java标记polyglot.js.nashorn-compat以便于迁移。因此,我使用了jdk11,将maven依赖项添加到pom.xml中,并使用了Java标志,但是当我尝试通过名称“graal.js”获取引擎时,此处为null:

ScriptEngine engine = engineManager.getEngineByName("graal.js")

我想念的是什么?如何使其运作?

最佳答案

这是一个示例maven项目,展示了如何通过脚本API和polyglot API在JDK11上运行GraalVM JavaScript引擎。希望能帮助到你!

https://github.com/graalvm/graal-js-jdk11-maven-demo

其要点是添加必要的依赖项(graal-sdk,js,js-scriptengine,以及可选的profiler和chromeinspector),使用启用的实验选项和JVMCI编译器(-XX:+UnlockExperimentalVMOptions -XX:+EnableJVMCI)运行,并使用graal jar( --upgrade-module-path=${compiler.dir}/compiler.jar),也可以从maven(org.graalvm.compiler:compiler)中获得。

09-26 14:45