当我尝试呼叫远程接口时出现此错误:
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);
处理完所有数据后
答案 0 :(得分:2)
究竟是什么问题?错误很明显 - 您无法序列化Cipher
类型。如果您查看此类型的Javadoc,它会告诉您:
为了创建Cipher对象,应用程序调用Cipher getInstance方法,并传递请求的名称 转变为它。可选地,提供者的名称可以是 指定。
因此,不是直接传递Cipher
,而是可以传递转换字符串(String
是可序列化的,因此可以“远程”)。