RMI要求你要传递的对象必须为可序列话的。既是implements Serilizable.你要传递的ObjectInputStream 只实现了DataInput, ObjectInput, ObjectStreamConstants 而没有实现Serilizable所以不行。要解决这个问题可以用继承的方法SubObjectInputStream extends ObjectInputStream implements Serilizable 然后在改写为public SubObjectInputStream getStream()就可以了。

解决方案 »

  1.   

    写了一个子类
    public class SeObjectInputStream extends ObjectInputStream implements Serializable
    {
        SeObjectInputStream(InputStream is) throws IOException
        {
            super(is);
        }
    }
    但是这样在客户端得SeObjectInputStream流正常了,但是却不能从中间取到值
    是否应该在子类中实现他的一些方法呢?
      

  2.   


    我很好奇的问一下,你为什么要远程传递ObjectInputStream呀?把它传过去要做什么?
      

  3.   

    因为中间使用的rmi接口传的是InputStream,所以就用这个了现在看来,大概要改接口了
      

  4.   

    如果你在SeObjectInputStream中重写writeObject()和readObject()就可以使以上程序正常了。不过如果工作量不是很大的话试试改接口吧,不然遇到问题不容易判断是哪里出的错。
      

  5.   

    改接口恐怕要影响其他模块了:(重写readObject,是不是按创建序列化的方式写啊?