Когда я пытаюсь запустить клиент 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, я получаюЭто же исключение, есть идеи, почему это происходит?
спасибо