亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

java ScriptEngine 在數組方法上失敗

java ScriptEngine 在數組方法上失敗

HUH函數 2023-04-19 15:41:42
我在 Java ScriptEngine 中執行一組 JavaScript 方法時遇到問題。我使用 JDK 8。例子@Testpublic 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 中使用數組?
查看完整描述

2 回答

?
德瑪西亞99

TA貢獻1770條經驗 獲得超3個贊

您正在使用 ES6 引入的箭頭函數。JDK8 Nashorn 不支持 ES6,只支持 ES5.1。將您的箭頭函數轉換為標準函數,它將運行:

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



查看完整回答
反對 回復 2023-04-19
?
紅顏莎娜

TA貢獻1842條經驗 獲得超13個贊

我使用 JDK 8。

對于您的腳本,您至少需要 JDK 9,因為有一個箭頭函數,它僅從 Java 9 開始受支持。


查看完整回答
反對 回復 2023-04-19
  • 2 回答
  • 0 關注
  • 245 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號