"java.rmi.ServerException: RemoteException Occurred in Server Thread (ClassNotFoundException)"
Problem:
When attempting to start an RMI server, the following exception is encountered:
java.rmi.ServerException: RemoteException occurred in server thread; nested exception is:
java.rmi.UnmarshalException: error unmarshalling arguments; nested exception is:
java.lang.ClassNotFoundException: Interfaces.RemoteMethodIntf
Copy after login
Diagnosis:
The underlying issue is that the RMI Registry cannot find the class referenced in the remote interface. This can occur in several situations:
-
Exporting: The stub generation tool (rmic) was not run or the necessary classpath modifications described in the preamble to the UnicastRemoteObject Javadoc were not performed.
-
Binding: The Registry does not have the stub, remote interface, or their dependencies on its classpath.
-
Looking Up: The client does not have the same classes on its classpath.
-
Calling Remote Method: Either the client sent an object to the server of a class missing on its classpath, or the server returned an object of a class missing on the client's classpath.
Solution:
In this particular case, the problem pertains to the Registry missing the necessary classes on its classpath. To resolve this issue, there are several options:
- Start the Registry with a modified CLASSPATH that includes the relevant JARs or directories.
- Start the Registry using LocateRegistry.createRegistry() within the server's JVM.
- Utilize dynamic stubs as described in the UnicastRemoteObject Javadoc. However, this may require addressing dependency issues.
- Ensure that case (4) above does not occur by verifying classpath consistency for object transfer.
- Consider using the codebase feature, recognizing that this is a deployment option.
The above is the detailed content of Why Do I Get \'java.rmi.ServerException: RemoteException Occurred in Server Thread (ClassNotFoundException)\' in My RMI Server?. For more information, please follow other related articles on the PHP Chinese website!