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

标签 java exception rmi unmarshalling

我是 RMI 的新手,我试图将用户定义类的 vector 返回给客户端。我收到一个解码异常。

Here is my code.

我得到的异常是:-

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)

最佳答案

异常原因是

Caused by: java.io.NotSerializableException: Text
                at java.io.ObjectOutputStream.writeObject0(Unknown Source)

在您的 Text 类中实现 Serializable 接口(interface)。

class Text implements Serializable{

}

关于java - 使用 RMI 将 Java Vector 从服务器返回到客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28351117/

相关文章:

c++ - 编码动态数组C++时出现内存异常

java - 如何将 Java RMI 限制为特定接口(interface)?

java - volley get 响应返回 java.lang.String 类型的值无法转换为 JSONArray

php - 有人知道 PHP 的默认异常代码吗?

java - 克隆存储库时 JGit 错误

使用隧道的 Java RMI - 一个异常(exception)

java - 验证服务器和客户端上的类是否相同

java - 如何在Java中解析远程计算机名称以获取其IP地址?

Java String 变量设置 - 引用还是值?

java - 给予改变的独特方式——不输出期望值