假设我有以下几行:
Registry registry = LocateRegistry.getRegistry(2121);
RemoteObject probe = (RemoteObject)registry.lookup(REMOTE_OBJ_NAME);//this throws exception
probe.doSomething();
例外是:
java.lang.ClassCastException: $Proxy1 cannot be cast to app.RemoteObject
为了清楚起见,RemoteObject
实现了一个扩展java.rmi.Remote
的接口。
答案 0 :(得分:4)
您需要转换为扩展Remote
的界面RemoteInterface probe = (RemoteInterface)registry.lookup(REMOTE_OBJ_NAME);
probe.doSomething();
这是因为你永远不会得到实际的对象,而是一个将任何方法调用转发给实际对象的存根对象
答案 1 :(得分:-1)
如果您的类实现了Serializable
,请不要扩展Remote