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

通过标准 JDK 11 使用 graalvm

通过标准 JDK 11 使用 graalvm

潇潇雨雨 2021-12-01 17:11:03
我有项目使用 Nashorn Javascript 引擎。我正在尝试迁移到 java11 并从 Nashorn 迁移到 Graal。我在这里读到我可以通过从 JDK 11 开始的标准 JDK 安装来使用 graal。此外,我在那里读到 Graal-SDK 已上传到 Maven 中心,并且有 Java 标志polyglot.js.nashorn-compat可以轻松迁移。所以我使用了 jdk11,将 maven 依赖项添加到 pom.xml 并使用了 java 标志但是当我试图通过名称“graal.js”获取引擎时,我在这里得到了空值:ScriptEngine engine = engineManager.getEngineByName("graal.js")我缺少什么?如何使它工作?
查看完整描述

2 回答

?
饮歌长啸

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

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

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

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


查看完整回答
反对 回复 2021-12-01
?
拉丁的传说

TA贡献1789条经验 获得超8个赞

您缺少以下依赖项:


<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();

但是似乎缺少另一个包,因为它对我不起作用。


查看完整回答
反对 回复 2021-12-01
  • 2 回答
  • 0 关注
  • 421 浏览

添加回答

举报

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