我有使用Nashorn Javascript引擎的项目。我正在尝试迁移到java11,也从Nashorn迁移到Graal。我已经读过here,可以从JDK 11开始通过标准的JDK安装使用graal。此外,我还读到了Graal-SDK已上载到Maven Central,并且有Java标志{{1} },便于迁移。因此,我使用了jdk11,将maven依赖项添加到pom.xml中,并使用了Java标志,但是当我尝试通过名称“ graal.js”获取引擎时,这里的值为空:
polyglot.js.nashorn-compat
我缺少什么?如何运作?
答案 0 :(得分:5)
这里是一个示例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
)中获得。
答案 1 :(得分:1)
您缺少以下依赖项:
<dependency>
<groupId>org.graalvm.js</groupId>
<artifactId>js-scriptengine</artifactId>
</dependency>
<dependency>
<groupId>org.graalvm.truffle</groupId>
<artifactId>truffle-api</artifactId>
</dependency>
js-scriptengine
包含ScriptEngine
实现:com.oracle.truffle.js.scriptengine.GraalJSScriptEngine
。
并且需要truffle-api(只有直接实例化GraalJSEngineFactory
时,您才会收到错误消息:
GraalJSEngineFactory gsf = new GraalJSEngineFactory();
但是似乎缺少另一个软件包,因为它对我不起作用。