【发布时间】:2014-08-19 14:23:28
【问题描述】:
当使用 Java 8 上的 Nashorn 将 Javascript Date 对象返回给 Java 时,如下所示:
ScriptEngineManager factory = new ScriptEngineManager();
ScriptEngine engine = factory.getEngineByName("nashorn");
Object js = engine.eval("new Date();");
通过以下尝试,我得到了例外:
-
Date javaDate = (Date)js;jdk.nashorn.api.scripting.ScriptObjectMirror cannot be cast to java.util.Date -
Date javaDate = js.to(Date.class);Cannot cast jdk.nashorn.internal.objects.NativeDate to java.util.Date -
Date javaDate = (Date)ScriptUtils.convert(js.to(NativeDate.class), Date.class);Cannot cast jdk.nashorn.internal.objects.NativeDate to java.util.Date
回到 Rhino,我只是使用 context.jsToJava(nativeDateObj, Date.class);。
有什么想法可以在返回 Java 时实际转换 NativeDate 吗?
附:如果我执行 js.toString() 那么它会给我“[Date 2012-01-01T19:00:00.000Z]”。我想我可以正则表达式解析...但是为什么-哦-为什么...
【问题讨论】:
标签: java javascript date nashorn