使用RMI将Java Vector从服务器返回到客户端

Sha*_*ail 1 java rmi exception unmarshalling

我是RMI的新手,我试图将一个用户定义类的向量返回给客户端.我得到一个unmarshal例外.

这是我的代码.

我得到的例外是: -

java.rmi.UnmarshalException: error unmarshalling return; nested exception is:
            java.io.WriteAbortedException: writing aborted; java.io.NotSerializableException: Text
            at sun.rmi.server.UnicastRef.invoke(Unknown Source)
            at HelloServerImplementation_Stub.viewTexts(Unknown Source)
            at HelloClient.main(HelloClient.java:30)
    Caused by: java.io.WriteAbortedException: writing aborted; java.io.NotSerializableException: Text
            at java.io.ObjectInputStream.readObject0(Unknown Source)
            at java.io.ObjectInputStream.readArray(Unknown Source)
            at java.io.ObjectInputStream.readObject0(Unknown Source)
            at java.io.ObjectInputStream.defaultReadFields(Unknown Source)
            at java.io.ObjectInputStream.readSerialData(Unknown Source)
            at java.io.ObjectInputStream.readOrdinaryObject(Unknown Source)
            at java.io.ObjectInputStream.readObject0(Unknown Source)
            at java.io.ObjectInputStream.readObject(Unknown Source)
            at sun.rmi.server.UnicastRef.unmarshalValue(Unknown Source)
            ... 3 more
    Caused by: java.io.NotSerializableException: Text
            at java.io.ObjectOutputStream.writeObject0(Unknown Source)
            at java.io.ObjectOutputStream.writeArray(Unknown Source)
            at java.io.ObjectOutputStream.writeObject0(Unknown Source)
            at java.io.ObjectOutputStream.access$300(Unknown Source)
            at java.io.ObjectOutputStream$PutFieldImpl.writeFields(Unknown Source)
            at java.io.ObjectOutputStream.writeFields(Unknown Source)
            at java.util.Vector.writeObject(Unknown Source)
            at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
            at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
            at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
            at java.lang.reflect.Method.invoke(Unknown Source)
            at java.io.ObjectStreamClass.invokeWriteObject(Unknown Source)
            at java.io.ObjectOutputStream.writeSerialData(Unknown Source)
            at java.io.ObjectOutputStream.writeOrdinaryObject(Unknown Source)
            at java.io.ObjectOutputStream.writeObject0(Unknown Source)
            at java.io.ObjectOutputStream.writeObject(Unknown Source)
            at sun.rmi.server.UnicastRef.marshalValue(Unknown Source)
            at sun.rmi.server.UnicastServerRef.dispatch(Unknown Source)
            at sun.rmi.transport.Transport$1.run(Unknown Source)
            at sun.rmi.transport.Transport$1.run(Unknown Source)
            at java.security.AccessController.doPrivileged(Native Method)
            at sun.rmi.transport.Transport.serviceCall(Unknown Source)
            at sun.rmi.transport.tcp.TCPTransport.handleMessages(Unknown Source)
            at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(Unknown Source)
            at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(Unknown Source)
            at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
            at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
            at java.lang.Thread.run(Unknown Source)
Run Code Online (Sandbox Code Playgroud)

RE3*_*350 5

异常的原因是

Caused by: java.io.NotSerializableException: Text
                at java.io.ObjectOutputStream.writeObject0(Unknown Source)
Run Code Online (Sandbox Code Playgroud)

Serializable在您的Text类中实现接口.

class Text implements Serializable{

}
Run Code Online (Sandbox Code Playgroud)