#java #exception #rmi
#java #исключение #rmi
Вопрос:
я получаю эту ошибку при попытке вызвать удаленный интерфейс:
java.rmi.MarshalException: error marshalling arguments; nested exception is: java.io.NotSerializableException: javax.crypto.Cipher
Это интерфейсы:
public interface Operacion extends Remote{
String operacionDesencripta(byte ciphertext[],Key key,Cipher cipher)
throws RemoteException;
}
и я называю это так:
rmiServidor.operacionDesencripta(ciphertext,key,cipher);
После обработки всех этих данных
Ответ №1:
В чем конкретно заключается вопрос? Ошибка довольно очевидна — вы не можете сериализовать Cipher
тип. Если вы проверите Javadoc для этого типа, он сообщит вам:
Чтобы создать объект Cipher, приложение вызывает метод getInstance Cipher и передает ему имя запрошенного преобразования. При необходимости может быть указано имя поставщика.
Таким образом, вместо того, чтобы передавать Cipher
напрямую, вы могли бы вместо этого передать строку преобразования ( String
сериализуемую и, следовательно, «удаляемую»).
Комментарии:
1. Спасибо, я понял, я просто создал экземпляр cyber обоими способами и просто отправил массив байтов и ключ 🙂