【问题标题】:How to return array from javascript call in java?如何从java中的javascript调用返回数组?
【发布时间】:2014-10-28 12:51:56
【问题描述】:

我在一个 js 文件中有以下内容:

function serialize() {
return new Uint8Array(1024);
}

我使用 java 脚本 API 调用该函数,如下所示:

byte[] bytes = (byte[]) ((Invocable)engine).invokeFunction(SERIALIZE_FUNC);

立即抛出异常:

javax.script.ScriptException: sun.org.mozilla.javascript.internal.EcmaError: ReferenceError: "Uint8Array" is not defined. (<Unknown source>#1) in <Unknown source> at line number 1
sun.org.mozilla.javascript.internal.EcmaError: ReferenceError: "Uint8Array" is not defined. (<Unknown source>#1)

我对javascript不太了解,但我认为这就是你在JavaScript中定义数组的方式?

【问题讨论】:

  • 你定义一个这样的数组:return [];.
  • @tieTYT 在 JavaScript 中?那么这一切是怎么回事:developer.mozilla.org/en-US/docs/Web/JavaScript/Typed_arrays
  • 嗯,我感觉你的 JavaScript 引擎根本不支持它。您使用的是哪个引擎?
  • @tieTYT 默认引擎,RhinoScriptEngine
  • 您运行的是什么版本的 Java?它可能在 JDK 8 中可用。

标签: java javascript scripting


【解决方案1】:

从外观上看,您的运行时不支持类型化数组。试试这个:

function serialize() {
    return [];
}

或者如果它需要长度为 1024,则创建一个所述长度的空数组,而不是这样

function serialize() {
    return new Array(1024);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-01-26
    • 2016-07-15
    • 1970-01-01
    • 2014-11-01
    • 2011-08-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多