传递ImageIcon对象的JavaRMI

传递ImageIcon对象的JavaRMI,java,rmi,imageicon,Java,Rmi,Imageicon,我正在制作一个基于rmi客户机-服务器的程序,该程序假定通过远程对象接口传递图像对象。客户端从服务器接收一个映像 以下是我的代码 在客户端 sendImage是一种实现的接口方法 public ImageIcon getImageFromServer() throws RemoteException; 服务器端 现在的问题是,我得到一个错误称为 java.rmi.UnmarshalException: error unmarshalling return

我正在制作一个基于rmi客户机-服务器的程序,该程序假定通过远程对象接口传递图像对象。客户端从服务器接收一个映像

以下是我的代码

在客户端

sendImage是一种实现的接口方法

        public ImageIcon getImageFromServer() throws RemoteException;
服务器端

现在的问题是,我得到一个错误称为

          java.rmi.UnmarshalException: error unmarshalling return
          nested exception is: java.io.EOFException               
现在,事实上我不知道它是怎么来的。。。 我的两个主要疑问是

是否可以通过rmi…发送ImageIcon对象。。。??如果是,这里可能有什么错误。如果没有,是否存在通过rmi将基于图像的对象作为参数传递的简单方法


我还听说javax.swing.ImageIcon是串行的……但在我的例子中没有发生同样的问题。

当我试图通过RMI传递ImageIcon对象时

经过长时间的检查…我发现我指定的url不正确

发生这种情况时,编译器通常会显示与您所示完全相同的解组异常


尝试检查您的本地URL…

您如何执行客户端和服务器?ImageIcon实现了可序列化,因此可以通过网络发送,但在您的情况下,反序列化似乎存在问题。来自ImageIcon的文档:警告:此类的序列化对象将与将来的Swing版本不兼容。当前的序列化支持适用于运行同一版本Swing的应用程序之间的短期存储或RMI。您的客户机和服务器是否使用相同版本的Swing?嗯……是的……我正在本地主机上运行它……。简单的实验:尝试用其他东西替换ImageIcon,比如字符串。你还收到同样的异常吗?我用字符串试过了…它起作用了…但当我试着使用ImageIcon时出现了问题…那么,使用它怎么样?返回用于在服务器端构造ImageIcon而不是ImageIcon的本地url。现在,您可以使用该字符串在客户端构造ImageIcon,而不是传输它。如果URL也可以被客户端访问,应该可以工作。你说得对……我有一个小的URL规范……但仍然不明白为什么会出现解组异常,因为它与序列化无关……我相信。。。
           public ImageIcon getImageFromServer()
           {
                  ImageIcon ic = new ImageIcon("local url specified");
                  return ic;
           }

         // Much of the Exceptions and other binding details are excluded for simpicity.....
          java.rmi.UnmarshalException: error unmarshalling return
          nested exception is: java.io.EOFException