首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从SignedObject获取时的InvalidObjectException

从SignedObject获取时的InvalidObjectException
EN

Stack Overflow用户
提问于 2012-07-24 03:33:59
回答 1查看 384关注 0票数 1

我使用ObjectInputStream通过TCP连接发送一个封装在SignedObject中的消息对象中的对象。下面是基本代码:

发送

代码语言:javascript
复制
Object data = someObject;
ObjectOutputStream = new ObjectOutputStream(socket.getOutputStream());
Message newMsg = new Message(data);
out.writeObject(security.signObject(newMsg,privKey));

接收

代码语言:javascript
复制
ObjectInputStream in = new ObjectInputStream(socket.getInputStream());
Object line = in.readObject();
SignedObject messageIn = (SignedObject) line;
Message msg = (Message) messageIn.getObject();

Message类是一个只有字段而没有方法的基本类。其中一个字段是Object Message.data,在本例中,它包含siena.Filter或siena.Notification。当我调用SignedObject.getObject()时,我得到一个InvalidObjectException。堆栈跟踪如下。

代码语言:javascript
复制
java.io.InvalidObjectException: siena.SENPInvalidFormat
at siena.Filter.readObject(Filter.java:127)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at java.io.ObjectStreamClass.invokeReadObject(Unknown Source)
at java.io.ObjectInputStream.readSerialData(Unknown Source)
at java.io.ObjectInputStream.readOrdinaryObject(Unknown Source)
at java.io.ObjectInputStream.readObject0(Unknown Source)
at java.io.ObjectInputStream.defaultReadFields(Unknown Source)
at java.io.ObjectInputStream.readSerialData(Unknown Source)
at java.io.ObjectInputStream.readOrdinaryObject(Unknown Source)
at java.io.ObjectInputStream.readObject0(Unknown Source)
at java.io.ObjectInputStream.readObject(Unknown Source)
at java.security.SignedObject.getObject(Unknown Source)

消息传输的代码正确。它适用于许多其他类的情况,甚至适用于同一类的其他版本。它不适用于特定版本的siena.Filter和siena.Notification。

我可以看到正在被发送的类(siena.Filter或siena.Notification)的readObject()方法正在被调用,但我不知道这是否应该发生。我知道在siena方法中抛出了一个异常,我猜是这个异常导致了InvalidObjectException。

所以问题是,是siena.class.readObject()抛出了异常并且没有正确编写,还是siena.class.readObject()被调用了呢?如果是后者,我该如何修复它呢?

谢谢,大卫

EN

回答 1

Stack Overflow用户

发布于 2012-08-01 02:51:28

一旦你得到了readObject,只需将其类型转换为你的SingledObject,应该可以吗?再次抱歉,我无法完全理解。你最好在这里输入一些代码。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11619254

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档