Salve a tutti
ho un problema durante la compilazione di un programma Client-Server RMI. Copio il codice e il risultato della compilazione
Server:
package Server;
public static void main(String[] args) {
if (args.length != 0)
args_parsing(args);
else
input.println("Argomenti settati di default");
stampaArgs();
input.println("Binding p2p_server");
client_online = new Hashtable<ide_client, info_client>();
files_published = new Hashtable<String, elem_lista_file>();
udp_timer = new Hashtable<ide_client, Long>();
input.println("Strutture allocated");
remote_server_method_impl server;
try {
server = new remote_server_method_impl(client_online,
files_published, udp_timer);
input.println(" *** ");
Registry registry = LocateRegistry.getRegistry("localhost",
RMI_registry_port);
input.print("the server has registered the service '");
input.println(name_service + "' Server: "+server);
input.println(" *** ");
registry.rebind(name_service, server);
input.println("# Server is now active #");
} catch (RemoteException e) {
input.println("Nessun servizio registrato");
e.printStackTrace();
System.exit(1);
} catch (IOException e) {
input.println("Impossibile creare una MulticastSocket su "
+ group.getHostAddress());
System.exit(1);
}
}
Risultato compilazione
alice@alice-laptop:~/workspace/LPR3/src/Server$ javac -d /home/alice/workspace/LPR3/bin/ -sourcepath src -classpath /home/alice/workspace/LPR3/src/ *.java
alice@alice-laptop:~/workspace/LPR3/src/Server$ java -classpath bin:/home/alice/workspace/LPR3/src/ Server.p2p_server
Argomenti settati di default
RMIporta 1099 kAport 5555 Mc group 226.226.226.226
Binding p2p_server
Strutture allocated
***
Server created table of published files and table of now-active client
***
the server has registered the service 'p2p' Server: remote_server_method_impl[UnicastServerRef [liveRef: [endpoint:[127.0.1.1:46140](local),objID:[57038110:12b01544e4c:-7fff, 9018748616976810194]]]]
***
Nessun servizio registrato
java.rmi.ServerException: RemoteException occurred in server thread; nested exception is:
java.rmi.UnmarshalException: error unmarshalling arguments; nested exception is:
java.lang.ClassNotFoundException: Server.remote_server_method
at sun.rmi.server.UnicastServerRef.oldDispatch(Unicas tServerRef.java:413)
at sun.rmi.server.UnicastServerRef.dispatch(UnicastSe rverRef.java:267)
at sun.rmi.transport.Transport$1.run(Transport.java:1 77)
at java.security.AccessController.doPrivileged(Native Method)
at sun.rmi.transport.Transport.serviceCall(Transport. java:173)
at sun.rmi.transport.tcp.TCPTransport.handleMessages( TCPTransport.java:553)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandl er.run0(TCPTransport.java:808)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandl er.run(TCPTransport.java:667)
at java.util.concurrent.ThreadPoolExecutor.runWorker( ThreadPoolExecutor.java:1110)
at java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:603)
at java.lang.Thread.run(Thread.java:636)
at sun.rmi.transport.StreamRemoteCall.exceptionReceiv edFromServer(StreamRemoteCall.java:273)
at sun.rmi.transport.StreamRemoteCall.executeCall(Str eamRemoteCall.java:251)
at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:3 77)
at sun.rmi.registry.RegistryImpl_Stub.rebind(Unknown Source)
at Server.p2p_server.main(p2p_server.java:120)
Caused by: java.rmi.UnmarshalException: error unmarshalling arguments; nested exception is:
java.lang.ClassNotFoundException: Server.remote_server_method
at sun.rmi.registry.RegistryImpl_Skel.dispatch(Unknow n Source)
at sun.rmi.server.UnicastServerRef.oldDispatch(Unicas tServerRef.java:403)
at sun.rmi.server.UnicastServerRef.dispatch(UnicastSe rverRef.java:267)
at sun.rmi.transport.Transport$1.run(Transport.java:1 77)
at java.security.AccessController.doPrivileged(Native Method)
at sun.rmi.transport.Transport.serviceCall(Transport. java:173)
at sun.rmi.transport.tcp.TCPTransport.handleMessages( TCPTransport.java:553)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandl er.run0(TCPTransport.java:808)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandl er.run(TCPTransport.java:667)
at java.util.concurrent.ThreadPoolExecutor.runWorker( ThreadPoolExecutor.java:1110)
at java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:603)
at java.lang.Thread.run(Thread.java:636)
Caused by: java.lang.ClassNotFoundException: Server.remote_server_method
at java.net.URLClassLoader$1.run(URLClassLoader.java: 217)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.j ava:205)
at java.lang.ClassLoader.loadClass(ClassLoader.java:3 21)
at java.lang.ClassLoader.loadClass(ClassLoader.java:2 66)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:264)
at sun.rmi.server.LoaderHandler.loadProxyInterfaces(L oaderHandler.java:728)
at sun.rmi.server.LoaderHandler.loadProxyClass(Loader Handler.java:672)
at sun.rmi.server.LoaderHandler.loadProxyClass(Loader Handler.java:609)
at java.rmi.server.RMIClassLoader$2.loadProxyClass(RM IClassLoader.java:646)
at java.rmi.server.RMIClassLoader.loadProxyClass(RMIC lassLoader.java:311)
at sun.rmi.server.MarshalInputStream.resolveProxyClas s(MarshalInputStream.java:255)
at java.io.ObjectInputStream.readProxyDesc(ObjectInpu tStream.java:1548)
at java.io.ObjectInputStream.readClassDesc(ObjectInpu tStream.java:1510)
at java.io.ObjectInputStream.readOrdinaryObject(Objec tInputStream.java:1749)
at java.io.ObjectInputStream.readObject0(ObjectInputS tream.java:1346)
at java.io.ObjectInputStream.readObject(ObjectInputSt ream.java:368)
... 12 more
A quel che ho capito non trova la classe Server.remote_server_method. (è un'interfaccia) L'interfaccia si trova nello stesso package del main insieme alla classe che implementa i suoi metodi e i package sono messi bene.
Perchè ho questo errore??
Grazie per l'aiuto! =)

Rispondi quotando

