RMI Server Exception

I get below exceptions from RMI when I try to start a server that uses a remote registry.

My registry cod for the main method in Server2 class

Registry registry = LocateRegistry.getRegistry("192.168.1.4",1100);
registry.rebind("Hello",stub);

192.168.1.4 is another machine on the same local network.

Please help me.

Server2 exception:java.rmi.ServerException: RemoteException occurred in server thread; nested exception is: 
 java.rmi.UnmarshalException: error unmarshalling arguments; nested exception is: 
 java.lang.ClassNotFoundException: example.Hello.RemoteHello2
java.rmi.ServerException: RemoteException occurred in server thread; nested exception is: 
 java.rmi.UnmarshalException: error unmarshalling arguments; nested exception is: 
 java.lang.ClassNotFoundException: example.Hello.RemoteHello2
 at sun.rmi.server.UnicastServerRef.oldDispatch(UnicastServerRef.java:396)
 at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:250)
 at sun.rmi.transport.Transport$1.run(Transport.java:159)
 at java.security.AccessController.doPrivileged(Native Method)
 at sun.rmi.transport.Transport.serviceCall(Transport.java:155)
 at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:535)
 at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:790)
 at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:649)
 at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
 at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
 at java.lang.Thread.run(Thread.java:619)
 at sun.rmi.transport.StreamRemoteCall.exceptionReceivedFromServer(StreamRemoteCall.java:273)
 at sun.rmi.transport.StreamRemoteCall.executeCall(StreamRemoteCall.java:251)
 at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:377)
 at sun.rmi.registry.RegistryImpl_Stub.rebind(Unknown Source)
 at example.Hello.Server2.main(Server2.java:29)
Caused by: java.rmi.UnmarshalException: error unmarshalling arguments; nested exception is: 
 java.lang.ClassNotFoundException: example.Hello.RemoteHello2
 at sun.rmi.registry.RegistryImpl_Skel.dispatch(Unknown Source)
 at sun.rmi.server.UnicastServerRef.oldDispatch(UnicastServerRef.java:386)
 at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:250)
 at sun.rmi.transport.Transport$1.run(Transport.java:159)
 at java.security.AccessController.doPrivileged(Native Method)
 at sun.rmi.transport.Transport.serviceCall(Transport.java:155)
 at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:535)
 at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:790)
 at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:649)
 at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
 at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
 at java.lang.Thread.run(Thread.java:619)

I have a class RemoteHello2, and I can confirm this, because another server program in the same package works fine.

I have 2 server programs, 1 uses localhost as a registry, and the second uses a remote server as a registry.

+3
source share
4 answers

. , rmi , , , server.class. , server.class, .

+17

RMI: !

6.1 RMI

, , ClassNotFoundException . - codebase, , .

, - , , , , , .

URL . : URL; , URL-, ; URL.

rmi-, classnotfound

+4

java.lang.ClassNotFoundException: example.Hello.RemoteHello2

, , ?

0

If the instance local to the registry works, but not the one that is remote, then I would suggest that your java.server.codebase uses a file: a URL that will not be accessible to the remote registry, or the remote registry does not have access to http: or ftp: codebase.

0
source

Source: https://habr.com/ru/post/1762911/


All Articles