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
相关产品推荐
相关产品推荐

