我在 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)
我尝试使用其他方法(每种方法等)得到相同的结果。没有语法错误,但 java 脚本编译器无法创建代码。我的 ScriptEngine 版本没有包含数组的方法。它返回语法错误。如何在 ScriptEngine 中使用数组?
德玛西亚99
红颜莎娜
相关分类