在序列化中
ObjectInputStream in = new ObjectInputStream(new FileInputStream(file));
Object o = null;
o = in.readObject();程序每次到in.readObject();这里就报错
报错原因是
java.lang.ClassNotFoundException: ij.bean.RoiBean其实,我知道他的意思是缺少这个类
但是,我很不明白,我这是输入输出流呀,为什么还要这样呀?

解决方案 »

  1.   

    我也来学习一下:
    Object o = null;
    o = in.readObject(); 这两步可以合并成一步吗:Object o = in.readObject();
      

  2.   

    java.lang.ClassNotFoundException: ij.bean.RoiBean 因为你客户端也需要这个类才可以read出来啊,否则readObject返回什么对象?
      

  3.   

    没有引该引的类,要么就是 jar包,检查工作环境。
      

  4.   

    虽然你认为它是一个Object,但是这个实例实际的class并不是Object。
    你可以改变引用的类型,却不能改变它的实际类型。
      

  5.   

    你可能没明白我的意思
    首先,我说我的程序
    我是用 java awt  开发的一个applet程序
    因为我要把 applet 程序中的一个list集合存到服务端,这个list集合中存放的是RoiBean对象实例
    我在applet中进行序列化
    URL url = new URL(uploadUrl + "&seizKey=" + seizKey);
    URLConnection urlcon = url.openConnection();
    ObjectOutputStream oos = new ObjectOutputStream(urlcon
    .getOutputStream());
    oos.writeObject(list);

     urlcon.getHeaderField(0);
    oos.flush();
    oos.close();
    然后把序列化对象转化成流的形式提交到服务端在服务端使用
    ObjectInputStream oin = new ObjectInputStream(request.getInputStream());
    Object vo = null;
    try {
    vo = oin.readObject(); oin.close();
    ObjectOutputStream out = 
    new ObjectOutputStream(new FileOutputStream(getSeizFile(seizKey)));
    out.writeObject(vo);
    out.close();
    } catch (Exception e) {
    e.printStackTrace();
    }
    来读取这个序列化的流,就是红字部分
    既然是“流”的形式存在了,为什么还报这样的错误哦? 
    而且我的变量o时object类型的呀
    请求帮助
      

  6.   

    每个类都必须有其确定的类型
    表面上任何一个对象都是Object,实际内部却有自己的类型。
    当readObject读到类型为RoiBean的对象时,却找不到该RoiBean类
    自然报类找不到错误
      

  7.   

    readObject的过程中必须构造出RoiBean的对象,并且会恢复它的成员变量
    所以客户端也必须有这个类才可以。就是readObject必须依赖这个类
      

  8.   

    List list = new ArrayList();
    虽然你声明list是一个List接口,但实际上并不影响他在内存中是一个ArrayList。
    同理,你认为对象是Object,但是它实际的类型并不是Object。jvm必须知道这个class的详细信息。