【发布时间】:2010-06-07 15:26:17
【问题描述】:
当我在运行 RMI 服务器后尝试运行 RMI 客户端时,出现以下异常:
EncodeInterface exception: java.lang.ClassCastException: $Proxy30 cannot be cast to hw2.chat.backend.main.EncodeInterface
java.lang.ClassCastException: $Proxy30 cannot be cast to hw2.chat.backend.main.EncodeInterface
at hw2.chat.backend.main.EncodingRmiClient.initialiseRMIClient(EncodingRmiClient.java:26)
而RMI客户端中的相关代码是:
EncodeInterface encodeInterface;
Registry registry = LocateRegistry.getRegistry(host, portNumber);
encodeInterface = (EncodeInterface)registry.lookup("RmiEncodingServer"); //line 26
在 RMI 服务器中:
try
{
EncodeInterface encodeInterface = new EncoderImpl();
Registry registry = LocateRegistry.getRegistry();
registry.rebind("RmiEncodingServer", encodeInterface);
System.out.println("RmiEncodingServer is running...");
}
EncodeInterface 是扩展Remote 的接口,它也存在于客户端。
Host 是“127.0.0.1”,portNumber 是 1099(我假设它应该是默认值 1099,因为我在运行 RmiEncodingServer 时没有指定它)。
如果我不运行 RMI 服务器,我会遇到同样的异常,你知道为什么会发生这种情况吗?
谢谢
【问题讨论】: