0

请教各位一个问题:
A项目使用ObjectOutputStream序列化ClassA对象进行保存二进制文件。
B项目反序列化这个文件,但是ClassA与A项目不在同一个目录。导致出现Caused by: java.lang.ClassNotFoundException异常。
请问除了弄成同一个目录还有其他有解决方案吗?

Jax小 15
2019-01-12 提问
3 个回答
1

已采纳

那就不要用ObjectOutputStream序列化,java序列化机制在序列化对象时,会将对象的类名,类的版本号序列化到字节流中,好让反序列化那一边认出这个类并构造这个类的对象。你现在B项目压根就没有A类,那你就不要用java序列化机制了,改用其他的序列化,比如序列化成Json字符串。

1

到底是序列化的时候出错还是反序列化的时候出错?

1

序列化只是一种方式,如果你想继续用 JAVA 原生的序列化方式也是可以的,但是你需要封装一个 API.jar 让两个分布式项目分别依赖。这样就解决了你现在遇到的问题。
另外序列化具体的方式还需要仔细考虑一下不同序列化方式的性能。

撰写答案

你可能感兴趣的

推广链接