如何加载从ObjectInputStream读取对象时找不到的类

时间:2014-11-04 08:23:09

标签: java classloader classnotfoundexception

如何在从ObjectInputStream

读取对象时加载未找到的类

实施例

    InputStream pis = new InputStream();
    ObjectInputStream ois = new ObjectInputStream(pis);
    Object o = null;
    try{
        o = ois.readObject();
    }
    catch(ClassNotFoundException ex){
       //How to try to load a class to read object again?????
       o = ois.readObject();
    }

谢谢, TH

3 个答案:

答案 0 :(得分:1)

在尝试反序列化对象时,尝试反序列化的对象的类应该已经在类路径中。

如果遇到这种情况,我猜你在运行时确实做不了多少。相反,您可以使用它来检测您是否仍然缺少类路径中的类,并在开发期间将这些类添加到项目和类路径中。

答案 1 :(得分:0)

在两端使用RMIClassLoader,并在发送端注意其记录的要求。

答案 2 :(得分:0)

如果班级已移动,也可以抛出ClassNotFoundException

让我们说你序列化一个类实例。之后,由于一些重构,课程被移动了。然后你就会被困住,因为旧班级的完全限定名称不再有效。无法从流中恢复您的对象。