RMI Exception de Serveur
Je suis en dessous exception de RMI lorsque j'essaie d'exécuter un Serveur qui utilise un registre à distance.
Mon registre de la morue pour la méthode main dans Server2 classe est
Registry registry = LocateRegistry.getRegistry("192.168.1.4",1100);
registry.rebind("Hello",stub);
192.168.1.4 est une autre machine sur le même réseau local.
S'il vous plaît aider moi.
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)
J'ai la classe appelée RemoteHello2 et je peux vous le confirmer car un autre programme de Serveur dans le même paquet est en cours d'exécution fine.
J'ai 2 programmes de serveur, 1 utilise localhost comme le registre et la 2ème, on utilise un serveur distant en tant que registre.
astuce: ClassNotFoundException: exemple.Bonjour.RemoteHello2
BTW, Vous ne pouvez pas [re]bind() à la non-locale RMI registre, pour des raisons de sécurité.
BTW, Vous ne pouvez pas [re]bind() à la non-locale RMI registre, pour des raisons de sécurité.
OriginalL'auteur Shew | 2010-09-02
Vous devez vous connecter pour publier un commentaire.
J'ai eu ce problème. Il s'avère que j'avais commencé le rmi registre via l'invite de commande comme d'habitude, mais je n'ai pas commencer dans le même dossier que mon server.class. Quand j'ai changé le répertoire où server.class a été, il a travaillé avec pas de problèmes.
c'est vraiment utiles
OriginalL'auteur cianBuckley
Ici sont des conseils de dépannage de RMI guide : Essayer!!!! Cela devrait aider
Vérifiez également la même question l'exécution de rmi serveur, classnotfound
avez-vous commencé à rmiregistry ?
OriginalL'auteur YoK
Donc, on dirait que vous êtes absent de cette classe depuis le classpath sur le serveur?
mais à partir de ce que je vois, vous êtes en cours d'exécution sur le serveur2 (au bas de la trace de la pile), de faire quelque chose sur le fil, et de l'autre côté vous ne trouvez pas votre serveur de classe. Vous ne pouvez pas déboguer sur le serveur?
OriginalL'auteur John Gardner
Si une instance locale dans le registre fonctionne, mais pas celui qui est à la distance, puis je pense que votre java.serveur.la base de code utilise soit un fichier: URL, ce qui ne serait pas accessible à distance à un registre, ou la distance au registre n'a pas accès à la http: ou ftp: base de code.
OriginalL'auteur mwhidden