Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Nashorn给出了Array.from(字符串)的错误_Javascript_Java_Arrays_Nashorn - Fatal编程技术网

Javascript Nashorn给出了Array.from(字符串)的错误

Javascript Nashorn给出了Array.from(字符串)的错误,javascript,java,arrays,nashorn,Javascript,Java,Arrays,Nashorn,我有一个javascript文件fun.js function fun1(){ var str='apple'; var charArray = Array.from(str); return charArray; } 我使用nashorn将这个字符返回到java代码中。但纳肖恩作为例外- javax.script.ScriptException:TypeError:Array.from不是第25行的函数 如何将Array.from()与nashorn一起使用,或者是否

我有一个javascript文件fun.js

function fun1(){
    var str='apple';
    var charArray = Array.from(str);
    return charArray;
}
我使用nashorn将这个字符返回到java代码中。但纳肖恩作为例外-

javax.script.ScriptException:TypeError:Array.from不是第25行的函数

如何将Array.from()与nashorn一起使用,或者是否有任何方法将字符串转换为js中与nashorn兼容的字符集。

我的java代码是-

    System.out.println("intialising parser....");

    ScriptEngine engine= new ScriptEngineManager().getEngineByName("nashorn");

    engine.eval(new FileReader("index.js"));
    Invocable invocable= (Invocable) engine;

    Object obj = (Object)invocable.invokeFunction("fun1");

还有,它是
String.toCharArray()
,因为Nashorn允许您使用Java方法。所以你可以

System.out.println("initializing parser....");
String js = "function fun1() { return 'apple'.toCharArray() }";
ScriptEngine engine = new ScriptEngineManager().getEngineByName("nashorn");
try {
    engine.eval(js);
    Invocable invocable = (Invocable) engine;

    Object obj = (Object) invocable.invokeFunction("fun1");
    System.out.println(Arrays.toString((char[]) obj));
} catch (Exception e) {
    e.printStackTrace();
}
这就产生了

initializing parser....
[a, p, p, l, e]

后来我发现事情就这么简单-

function fun1(){
var str='apple';
var charArray =str.split('');
return charArray;
}

它还与nashorn兼容。

这可能是正确的,但在我的情况下,拆分(“”)是有效的。感谢您的响应,拆分(“”)将创建N个字符串,其中包含一个字符。调用toCharArray绝对是有效的——因为这样会创建实际的Java字符[]