java – “创建简单的RMI应用程序时,”ClassCastException:$Pro
我正在创建我的第一个非常简单的RMI客户端 – 服务器应用程序.
这是代码: 界面“通讯” package itu.exercies.RMI.server; import java.rmi.Remote; import java.rmi.RemoteException; public interface ICommunication extends Remote { public String doCommunicate(String name) throws RemoteException; } 界面实现“CommunicationImpl”: package itu.exercies.RMI.server; import java.rmi.RemoteException; import java.rmi.server.UnicastRemoteObject; public class CommunicationImpl extends UnicastRemoteObject implements ICommunication { /** * */ private static final long serialVersionUID = 1L; public CommunicationImpl() throws RemoteException { super(); } @Override public String doCommunicate(String name) throws RemoteException { return "Hello this is server,whats up " +name+ " ?!n"; } } 这是我的主要服务器类“CommunicationServer”: package itu.exercies.RMI.server; import java.net.MalformedURLException; import java.rmi.Naming; import java.rmi.RemoteException; public class CommunicationServer { /** * @param args * @throws RemoteException * @throws MalformedURLException */ public static void main(String[] args) throws RemoteException,MalformedURLException { CommunicationImpl imp = new CommunicationImpl(); Naming.rebind("CommunicationImpl",imp); System.out.println("Server started..."); System.out.println("Object successfully registered. It is bound to the name 'CommunicationImpl'."); } } 这是我的客户端“CommunicationClient”: package itu.exercies.RMI.client; import java.net.MalformedURLException; import java.rmi.Naming; import java.rmi.NotBoundException; import java.rmi.RemoteException; import itu.exercies.RMI.server.CommunicationImpl; public class CommunicationClient { public static void main(String[] args) throws MalformedURLException,RemoteException,NotBoundException { String url = new String("rmi://localhost/CommunicationImpl"); CommunicationImpl comm = (CommunicationImpl)Naming.lookup(url); String reply = comm.doCommunicate("Wiktor"); System.out.println(reply); } } 现在我试图运行它: >我使用终端导航到我的项目的bin目录
到目前为止,我试图通过使用rmic创建一个“CommunicationImpl”对象的存根来修复它,但现在而不是’$Proxy0′,错误是指’CommunicationImpl_Stub’:
在这一点上,我不知道要查找错误.有人可以给我任何建议吗? 解决方法
更换
CommunicationImpl comm = (CommunicationImpl) Naming.lookup(url); 同 ICommunication comm = (ICommunication) Naming.lookup(url); CommunicationImpl是ICommunication的服务器实现.客户端既不知道也不关心实现,只有接口. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |