Chat "cuori solitari"

di il
2 risposte

Chat "cuori solitari"

Salve ragazzi sto implementando una chat, ho due progetti(su eclipse) un progetto per l'implementazione del server e un progetto per l'implementazione del client, ho però un problema sull'implementazione l'ide mi da un errore durante la compilazione del client.
Questo è il messaggio di errore che mi caccia eclipse

java.rmi.UnmarshalException: error unmarshalling return; nested exception is: 
	java.lang.ClassNotFoundException: serverImplementation_Stub
	at sun.rmi.registry.RegistryImpl_Stub.lookup(Unknown Source)
	at java.rmi.Naming.lookup(Unknown Source)
	at ClientClass.main(ClientClass.java:63)
Caused by: java.lang.ClassNotFoundException: serverImplementation_Stub
	at java.net.URLClassLoader$1.run(Unknown Source)
	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 sun.rmi.server.LoaderHandler$Loader.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.loadClassForName(Unknown Source)
	at sun.rmi.server.LoaderHandler.loadClass(Unknown Source)
	at sun.rmi.server.LoaderHandler.loadClass(Unknown Source)
	at java.rmi.server.RMIClassLoader$2.loadClass(Unknown Source)
	at java.rmi.server.RMIClassLoader.loadClass(Unknown Source)
	at sun.rmi.server.MarshalInputStream.resolveClass(Unknown Source)
	at java.io.ObjectInputStream.readNonProxyDesc(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)
	... 3 more

vi linko il codice del server e il codice del client
server:

import java.net.MalformedURLException;
import java.rmi.Naming;
import java.rmi.RemoteException;
import java.rmi.server.UnicastRemoteObject;
import java.util.ArrayList;
import java.util.logging.Logger;


public class serverImplementation extends UnicastRemoteObject implements IChat {

	ArrayList<ClientInterface> uomini;
	ArrayList<ClientInterface> donne;
	protected serverImplementation() throws RemoteException {
		super();
		uomini= new ArrayList<ClientInterface>();
		donne= new ArrayList<ClientInterface>();
	}

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	@Override
	public void registrati(ClientInterface utente)
			throws RemoteException {
		if(utente.getSesso().equalsIgnoreCase("uomini")){
			uomini.add(utente);
			cercaCompagno(utente, "donne");
		}
		else if(utente.getSesso().equalsIgnoreCase("donne")){
			donne.add(utente);
			cercaCompagno(utente, "uomini");
		}
	}

	@Override
	public void esci(ClientInterface utente,String sesso) throws RemoteException {
		if(sesso.equalsIgnoreCase("uomini"))
			uomini.remove(utente);
		else
			donne.remove(utente);
	}

	@Override
	public void cercaCompagno(ClientInterface utente,String sesso) throws RemoteException {
		if(sesso.equalsIgnoreCase("uomini")){
				for(int i=0;i<donne.size();i++){
					if(donne.get(i).getImpegnato()==false){
						utente.messaggia(utente,donne.get(i),"inizio conversazione\n");
						i=donne.size();
						donne.get(i).setImpegnato(true);
					}//chiusura dell'if
				}//chiusura del for
		}//chiusura dell'if esterno
		else{
			for(int i=0;i<uomini.size();i++){
				if(uomini.get(i).getImpegnato()==false){
					utente.messaggia(utente,uomini.get(i),"inizio conversazione\n");
					uomini.get(i);
					uomini.get(i).setImpegnato(true);
					i=uomini.size();
				}//chiusura dell'if
			}
		}
	}

	public static void main(String[] args) {
		Logger logger= Logger.getGlobal();
		System.setSecurityManager(new SecurityManager());
		serverImplementation server;
		try {
			server = new serverImplementation();
			Naming.rebind("cuoriSolitari",server);
		} catch (RemoteException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (MalformedURLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}
client:

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.Reader;
import java.net.MalformedURLException;
import java.rmi.Naming;
import java.rmi.NotBoundException;
import java.rmi.RemoteException;
import java.rmi.server.UnicastRemoteObject;
import java.util.Scanner;


public class ClientClass extends UnicastRemoteObject implements ClientInterface{
	private String nick;
	private boolean impegnato;
	private String sesso;
	protected ClientClass(String nick,String sesso) throws RemoteException {
		super();
		impegnato=false;
		this.nick=nick;
		this.sesso=sesso;
	}
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	@Override
	public void setImpegnato(boolean stato) {
		impegnato=stato;

	}

	@Override
	public boolean getImpegnato() {
		// TODO Auto-generated method stub
		return impegnato;
	}

	@Override
	public void messaggia(ClientInterface utente, ClientInterface utente2,String messaggia)
			throws RemoteException {
		while(!messaggia.equals("!QUIT")){
			System.out.println(messaggia);
			BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
			System.out.println(">> "+getNick());
			utente2.messaggia(utente, utente2, messaggia);
		}

	}
	@Override
	public String getNick() throws RemoteException {
		// TODO Auto-generated method stub
		return nick;
	}
	@Override
	public String getSesso() throws RemoteException {
		// TODO Auto-generated method stub
		return null;
	}
	public static void main(String[] args) {
		System.setSecurityManager(new SecurityManager());
		try {
			IChat server =(IChat) Naming.lookup("cuoriSolitari");
			String nickName;
			String sesso;
			Scanner in = new Scanner(System.in);
			System.out.println("inserisci il nick");
			nickName=in.nextLine();
			System.out.println("inserisci il sesso");
			sesso=in.nextLine();
			server.registrati(new ClientClass(nickName, sesso));

		} catch (MalformedURLException | RemoteException | NotBoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}

l'errore nello specifico mi viene generato nel momento che nel client provo ad eseguire questa istruzione:

	IChat server =(IChat) Naming.lookup("cuoriSolitari"); // IChat è l'interfaccia del server

2 Risposte

Devi accedere o registrarti per scrivere nel forum
2 risposte