I am facing a situation where I am facing the error "error unmarshalling arguments". Context is, I hava a java process running on a remote machine and from other machine, I am trying to get the object reference of the process running on remote machine using RMI. After succesfully getting the remote object reference, I am trying to invoke a remote procedure using this remote object reference using the same RMI. while invoking the remote method, I am getting the exception like "error unmarshalling arguments". Interestingly, the remote method which I am trying to invoke will not take any arguments. The call is something like "RemoteProcessReferenceObject.methodName()". In this case, I am getting OptionalDataException as nested exception. I am new to RMI concepts. Please guide me how to solve this issue. Mainly I am confusing why I need to get this OptionalDataException followed by error unmarshalling arguments when I am calling the Remote method which don't take any arguments at all? (I Understand that OptionalDataException will occur when we are trying to read an object on server side and this object data is followed by primitive data but in first place why RMI considers it a problem if a primitive data is passed after an object data and in this case, even though there are no arguments what it is trying to unmarshall). Please help me to understand the deep concept of this RMI parameter unmarshalling.