java.rmi.MarshalException: шифрование

#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 обоими способами и просто отправил массив байтов и ключ 🙂