Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    [Java] RemoteException inspiegabile?

    Salve a tutti,
    ho scritto un programmino che utilizza il rmiregistery, solo che quando arriva a registrare il servizio (ovvero al comando Naming.rebind(nomeservizio,serverRMI); ) in esecuzione si generano le seguenti eccezioni:


    codice:
    Server RMI "Server": RemoteException occurred in server thread; nested exception is: 
    	java.rmi.UnmarshalException: error unmarshalling arguments; nested exception is: 
    	java.lang.ClassNotFoundException: RemOp
    java.rmi.ServerException: RemoteException occurred in server thread; nested exception is: 
    	java.rmi.UnmarshalException: error unmarshalling arguments; nested exception is: 
    	java.lang.ClassNotFoundException: RemOp
    	at sun.rmi.server.UnicastServerRef.oldDispatch(Unknown Source)
    	at sun.rmi.server.UnicastServerRef.dispatch(Unknown Source)
    	at sun.rmi.transport.Transport$1.run(Unknown Source)
    	at java.security.AccessController.doPrivileged(Native Method)
    	at sun.rmi.transport.Transport.serviceCall(Unknown Source)
    	at sun.rmi.transport.tcp.TCPTransport.handleMessages(Unknown Source)
    	at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(Unknown Source)
    	at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(Unknown Source)
    	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
    	at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    	at java.lang.Thread.run(Unknown Source)
    	at sun.rmi.transport.StreamRemoteCall.exceptionReceivedFromServer(Unknown Source)
    	at sun.rmi.transport.StreamRemoteCall.executeCall(Unknown Source)
    	at sun.rmi.server.UnicastRef.invoke(Unknown Source)
    	at sun.rmi.registry.RegistryImpl_Stub.rebind(Unknown Source)
    	at java.rmi.Naming.rebind(Unknown Source)
    	at ServerImpl.main(ServerImpl.java:100)
    Caused by: java.rmi.UnmarshalException: error unmarshalling arguments; nested exception is: 
    	java.lang.ClassNotFoundException: RemOp
    	at sun.rmi.registry.RegistryImpl_Skel.dispatch(Unknown Source)
    	at sun.rmi.server.UnicastServerRef.oldDispatch(Unknown Source)
    	at sun.rmi.server.UnicastServerRef.dispatch(Unknown Source)
    	at sun.rmi.transport.Transport$1.run(Unknown Source)
    	at java.security.AccessController.doPrivileged(Native Method)
    	at sun.rmi.transport.Transport.serviceCall(Unknown Source)
    	at sun.rmi.transport.tcp.TCPTransport.handleMessages(Unknown Source)
    	at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(Unknown Source)
    	at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(Unknown Source)
    	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
    	at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    	at java.lang.Thread.run(Unknown Source)
    Caused by: java.lang.ClassNotFoundException: RemOp
    	at java.net.URLClassLoader$1.run(Unknown Source)
    	at java.security.AccessController.doPrivileged(Native Method)
    	at java.net.URLClassLoader.findClass(Unknown Source)
    	at java.lang.ClassLoader.loadClass(Unknown Source)
    	at java.lang.ClassLoader.loadClass(Unknown Source)
    	at java.lang.Class.forName0(Native Method)
    	at java.lang.Class.forName(Unknown Source)
    	at sun.rmi.server.LoaderHandler.loadProxyInterfaces(Unknown Source)
    	at sun.rmi.server.LoaderHandler.loadProxyClass(Unknown Source)
    	at sun.rmi.server.LoaderHandler.loadProxyClass(Unknown Source)
    	at java.rmi.server.RMIClassLoader$2.loadProxyClass(Unknown Source)
    	at java.rmi.server.RMIClassLoader.loadProxyClass(Unknown Source)
    	at sun.rmi.server.MarshalInputStream.resolveProxyClass(Unknown Source)
    	at java.io.ObjectInputStream.readProxyDesc(Unknown Source)
    	at java.io.ObjectInputStream.readClassDesc(Unknown Source)
    	at java.io.ObjectInputStream.readOrdinaryObject(Unknown Source)
    	at java.io.ObjectInputStream.readObject0(Unknown Source)
    	at java.io.ObjectInputStream.readObject(Unknown Source)
    	... 12 more
    ho gia a provato a cercare la soluzione sul forum o su intenet ma ho trovato poco e non mi ha aiutato

    PS: stessa cosa succede anche se non esegue eclipse ovvero se eseguo prima javac per le classi poi genero lo stub e lo skeleton con rmic -vcompat classeServer
    PS2: ovviamente ho l'rmiregistry avviato in locale su un altra shell

  2. #2
    ah mi sono dimenticato di dire che invece se creo un RMIRegistry con il comando LocalRegistry.createRegistery(port);
    funziona tutto a modo ....

  3. #3
    ok l'errore era talmente banale che a scrivere la soluzione mi vergogno ma va bhe casomai puo servire anche a qualcun altro percio:

    compilazione:
    Lato server:
    codice:
    javac <classi del server>
    rmic -vcompat <classe che implementa il server (ovvero la classe che implementa l'interfaccia che estende Remote))
    java <classe server>
    Lato client:
    codice:
    javac <classi client>
    java <classi client>
    IMPORTANTE (ed ecco dove sbagliavo io):
    l'rmiregistry lo dovete lanciare dalla cartella in cui lanciate le altre classi.
    Ovvero aprendo una nuova shell per rmiregistry:
    codice:
    cd <cartella dove sono i file.class del server >
    rmiregistry [porta]
    [porta]= porta d'ascolto del rmiregistry, se non viene messo questo valore di default è 1099

  4. #4
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,480

    Moderazione

    Ho spostato la discussione nel forum dedicato a Java.
    In futuro, poni qui le tue domande relative a questo linguaggio.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.