如何(Java-)在Vert.x JavaScript中序列化Nashorn的JSObjects

问题描述 投票:0回答:1

在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对象。


附加信息:

  1. 我在Ubuntu 16.04 64bit上使用Vert.x 3.5和JVM 1.8.0_151(OpenJDK)。
  2. 使用命令vertx run main.js --conf=cfg.json --redeploy="*.js" --launcher-class=io.vertx.core.Launcher启动JavaScript Verticle。
javascript java serialization vert.x nashorn
1个回答
0
投票

不,nashorn类不是Serializable,这是一个设计决策。您将使用JSON来序列化nashorn脚本对象。

© www.soinside.com 2019 - 2024. All rights reserved.