在 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。答案 0 :(得分:0)
不,nashorn类不是Serializable,这是一个设计决策。您已经使用JSON来序列化nashorn脚本对象。