我正在序列化一个Class对象的地图和一个字符串列表,它们运行得很好。但是,如果我尝试反序列化它,我得到一个ClassNotFoundException。 这是代码:
Map<Class<? extends IDomain>, List<String>> mapPresetImport = (Map<Class<? extends IDomain>, List<String>>) ois.readObject();
可能导致该异常的原因是什么?
答案 0 :(得分:0)
好的,我现在明白了。 IDomain是可访问的,但是类是 序列化不是,因为它们在另一个包中而不是 包含在课程路径中。
正如您在注释中提到的那样,序列化的类在运行时类路径中不可用,因此导致ClassNotFoundException
。
还有另一种方法可以反序化 数据没有加载/首先查找类?
不,这种依赖是必须的。您需要在反序列化对象之前包含类(以获取此类异常)。 Java中使用的反序列化机制肯定会在尝试定位被反序列化的类的阶段失败。