在实验创建Amf3格式消息时,能够正常serialize消息,却不能deserialize消息。想求问原因
public class Demo {
public static void main(String[] args) throws IOException, ClassNotFoundException {
Student st=new Student();
byte[] _bs =Amf3_3.serialize(st);
Student st2= (Student) Amf3_3.deserialize(_bs);
}
public class Amf3_3 {
public static byte[] serialize(Object data) throws IOException {
MessageBody body = new MessageBody();
body.setData(data);
ActionMessage message = new ActionMessage();
message.addBody(body);
ByteArrayOutputStream out = new ByteArrayOutputStream();
AmfMessageSerializer serializer = new AmfMessageSerializer();
serializer.initialize(SerializationContext.getSerializationContext(), out, null);
serializer.writeMessage(message);
return out.toByteArray();
}
public static Object deserialize(byte[] amf) throws ClassNotFoundException, IOException {
ByteArrayInputStream in = new ByteArrayInputStream(amf);
AmfMessageDeserializer deserializer = new AmfMessageDeserializer();
deserializer.initialize(SerializationContext.getSerializationContext(), in, null);
ActionMessage message=new ActionMessage();
deserializer.readMessage(message, new ActionContext());
return message.getBody(0);
}
}
public class Student implements Serializable{
private static final long serialVersionUID = 1L;
public String account;
public String tClass;
public Student() {
this.account = "111";
this.tClass = "222";
}
@Override
public String toString() {
return "Student{" +
"account='" + account + '\'' +
", tClass='" + tClass + '\'' +
'}';
}
}
运行结果及报错内容
Exception in thread "main" flex.messaging.io.SerializationException: Creation validation for class 'Student' failed.
at flex.messaging.util.ClassUtil.validateCreation(ClassUtil.java:354)
at flex.messaging.util.ClassUtil.createDefaultInstance(ClassUtil.java:115)
at flex.messaging.io.AbstractProxy.createInstanceFromClassName(AbstractProxy.java:95)
at flex.messaging.io.AbstractProxy.createInstance(AbstractProxy.java:115)
at flex.messaging.io.amf.AbstractAmfInput.createObjectInstance(AbstractAmfInput.java:169)
at flex.messaging.io.amf.Amf3Input.readScriptObject(Amf3Input.java:748)
at flex.messaging.io.amf.Amf3Input.readObjectValue(Amf3Input.java:156)
at flex.messaging.io.amf.Amf3Input.readObject(Amf3Input.java:134)
at flex.messaging.io.amf.Amf0Input.readObjectValue(Amf0Input.java:124)
at flex.messaging.io.amf.Amf0Input.readObject(Amf0Input.java:95)
at flex.messaging.io.amf.AmfMessageDeserializer.readObject(AmfMessageDeserializer.java:199)
at flex.messaging.io.amf.AmfMessageDeserializer.readBody(AmfMessageDeserializer.java:173)
at flex.messaging.io.amf.AmfMessageDeserializer.readMessage(AmfMessageDeserializer.java:93)
at Amf3_3.deserialize(Amf3_3.java:28)
at Demo.main(Demo.java:28)
断开与目标 VM 的连接,地址:'127.0.0.1:1113', transport: 'socket'
进程已结束,退出代码 1