Nashorn 给出 Array.from(string) 错误
Nashorn gives error with Array.from(string)
我有一个java脚本文件fun.js
function fun1(){
var str='apple';
var charArray = Array.from(str);
return charArray;
}
我使用 nashorn return 这个 charArray 到我的 java 代码。但是 nashorn 给出了例外,因为-
javax.script.ScriptException: TypeError: Array.from 不是第 25 行的函数
如何将 Array.from() 与 nashorn 一起使用,或者有什么方法可以在与 nashorn 兼容的 js 中将字符串转换为 charArray。
我的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
我有一个java脚本文件fun.js
function fun1(){
var str='apple';
var charArray = Array.from(str);
return charArray;
}
我使用 nashorn return 这个 charArray 到我的 java 代码。但是 nashorn 给出了例外,因为-
javax.script.ScriptException: TypeError: Array.from 不是第 25 行的函数
如何将 Array.from() 与 nashorn 一起使用,或者有什么方法可以在与 nashorn 兼容的 js 中将字符串转换为 charArray。
我的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