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

运行Karate测试时遇js.experimental-foreign-object-prototype错误求助

问题描述

运行Karate测试时抛出如下异常:

java.lang.IllegalArgumentException: Could not find option with name js.experimental-foreign-object-prototype.
Did you mean one of the following?
    js.foreign-object-prototype=<Boolean>
        at org.graalvm.truffle/com.oracle.truffle.polyglot.PolyglotEngineException.illegalArgument(PolyglotEngineException.java:131)

本地已安装GraalVM 22并包含JS组件,相同测试在服务器上可正常运行,怀疑是本地缺少相关配置项导致。

解决方法

这个错误源于GraalVM版本迭代带来的配置选项名称变更:

  • 旧版GraalVM中,启用外部对象原型的选项为js.experimental-foreign-object-prototype
  • GraalVM 22及以上版本中,该选项已简化为js.foreign-object-prototype,移除了experimental-前缀

按以下步骤调整即可解决:

  • 修改JVM启动参数:若通过命令行运行测试,将原参数--js.experimental-foreign-object-prototype=true替换为--js.foreign-object-prototype=true
  • 调整Karate配置:若在Karate配置文件或代码中指定了该选项,将配置项名称从js.experimental-foreign-object-prototype改为js.foreign-object-prototype,并设置为布尔值(true/false)
  • 验证JS组件完整性:执行gu list命令检查GraalVM组件,确保输出中包含org.graalvm.js

服务器能正常运行的原因大概率是其使用的GraalVM版本低于22,仍兼容旧的选项名称,而本地22+版本已废弃带experimental-前缀的配置项。

内容的提问来源于stack exchange,提问作者Awanish Tiwari

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 06:07:06