gpt4 book ai didi

javascript - java ScriptEngine 在数组方法上失败

转载 作者:行者123 更新时间:2023-12-02 09:39:38 25 4
gpt4 key购买 nike

我在 Java ScriptEngine 中执行 JavaScript 方法数组时遇到问题。

我使用 JDK 8。

示例

@Test
public void arrayMethod() throws Exception {
ScriptEngine engine;
engine = new ScriptEngineManager().getEngineByName("JavaScript");
String script = "function f1() { return [\"string2\",\"string3\"].some(item => o1==item); }";
engine.eval(script);
engine.put("o1", "string1");
Boolean result = (Boolean) (((Invocable) engine).invokeFunction("f1"));
LOG.info(result.toString());
}

结果

java.lang.AssertionError:无法为 :1 生成字节码

at jdk.nashorn.internal.codegen.CompilationPhase$BytecodeGenerationPhase.transform(CompilationPhase.java:431)
at jdk.nashorn.internal.codegen.CompilationPhase.apply(CompilationPhase.java:624)
at jdk.nashorn.internal.codegen.Compiler.compile(Compiler.java:655)

我尝试使用其他方法(every等)得到相同的结果。没有语法错误,但 java 脚本编译器无法创建代码。我的 ScriptEngine 版本没有包含数组的方法。它返回语法错误。如何在 ScriptEngine 中使用数组?

最佳答案

您正在使用 ES6 中引入的箭头函数。 JDK8 Nashorn不支持ES6,仅支持ES5.1。将您的箭头函数转换为标准函数,它将运行:

String script = "function f1() { return [\"string2\",\"string3\"].some(function(item){return o1==item;})}";

关于javascript - java ScriptEngine 在数组方法上失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57202948/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com