【发布时间】:2018-03-25 05:59:39
【问题描述】:
我有一个 javascript 文件 fun.js
function fun1(){
var arr =['This','is','from','js'];
return arr;
}
我想在 java 数组中获取这个数组,所以我使用 nashorn as-
try{
ScriptEngine engine= new ScriptEngineManager().getEngineByName("nashorn");
engine.eval(new FileReader("fun.js"));
Invocable invocable = (Invocable) engine;
Object obj = (Object)invocable.invokeFunction("fun1");
System.out.println(obj.toString());
}
catch(Exception e){
e.printStackTrace();
}
但是我得到了这个输出- [对象数组]
我怎样才能得到这个输出为java数组?
【问题讨论】:
-
eval()是你在任何语言中做过的最糟糕的事情之一。 -
您是否尝试循环遍历数组并打印出内容?
-
应该将类型转换为 Object[] 然后使用 for 循环。
-
@Prashant 它给出了错误 -- java.lang.ClassCastException: jdk.nashorn.api.scripting.ScriptObjectMirror 不能被转换为 [Ljava.lang.Object;
-
你的文件 fun.js 的内容是什么。也请显示方法代码
fun1
标签: javascript java arrays nashorn