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