You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Quarkus(JDK11)基于GraalVM运行时Graal.js无法调用的问题求助

解决GraalVM环境下Quarkus应用无法加载Graal.js的问题

步骤1:确认GraalVM已安装JS语言组件

GraalVM CE版本默认可能未预装JS组件,需先检查并安装:

  • 打开终端,进入GraalVM的bin目录,执行:
    gu list
    
  • 若输出中没有js组件,执行以下命令安装:
    gu install js
    

步骤2:调整依赖与JVM启动参数

依赖检查

确保pom.xml中Graal.js相关依赖版本与GraalVM版本完全匹配(你的场景中是22.3.1),可添加org.graalvm.sdk:sdk依赖完善Polyglot API支持:

<dependency>
    <groupId>org.graalvm.sdk</groupId>
    <artifactId>sdk</artifactId>
    <version>22.3.1</version>
    <scope>runtime</scope>
</dependency>

添加启动参数

启动Quarkus应用时,添加以下JVM参数强制启用Graal.js的ScriptEngine实现:

-Dpolyglot.js.scriptengine=enabled

步骤3:改用GraalVM Polyglot API(推荐)

如果通过ScriptEngineManager仍无法获取Graal.js,建议直接使用GraalVM原生的Polyglot API,这种方式更稳定且性能更优:

import org.graalvm.polyglot.Context;
import org.graalvm.polyglot.Value;

// 创建JS上下文并执行代码
try (Context context = Context.create("js")) {
    Value jsResult = context.eval("js", "1 + 2");
    System.out.println("执行结果:" + jsResult.asInt());
}

步骤4:Quarkus专属配置

在application.properties中添加以下配置,确保Quarkus启用Graal.js支持:

quarkus.polyglot.js.enabled=true

内容的提问来源于stack exchange,提问作者Tony Weston

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 01:52:34