在Vert.x JavaScript Verticle中,我尝试使用以下代码来序列化JavaScript对象:
var o={"foo":"bar"};
var baos=new java.io.ByteArrayOutputStream();
var oos=new java.io.ObjectOutputStream(baos);
oos.writeObject(o);
但是,最后一行抛出以下异常:
java.io.NotSerializableException: jdk.nashorn.api.scripting.ScriptObjectMirror
看看Nashorn的API文档,似乎ScriptObjectMirror
和实现的JSObject
接口没有实现Serializable
,因此序列化失败。
是否有允许序列化这些对象的技巧或解决方法?
PS:我不想将它们序列化为JSON,因为我打算使用的主函数应该以相同的方式序列化所有Java对象。
附加信息:
vertx run main.js
--conf=cfg.json --redeploy="*.js" --launcher-class=io.vertx.core.Launcher
启动JavaScript Verticle。不,nashorn类不是Serializable,这是一个设计决策。您将使用JSON来序列化nashorn脚本对象。