當我嘗試運行RMI服務器我得到下面的異常後運行的RMI客戶端: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
的接口,也存在於客戶端。
主機是「127.0.0.1」,portNumber是1099(我假設它應該是默認值1099,因爲我沒有在運行我的RmiEncodingServer
時指定它)。
如果我不運行RMI服務器,我會得到相同的異常,對於這種情況發生的原因有什麼想法?
感謝