Sockets

Iniciado por nerckos, 28 Abril 2010, 17:52 PM

0 Miembros y 1 Visitante están viendo este tema.

nerckos

Buenas tardes a todos  ;D. La question esque tengo una duda con lo que respecta a el envio de objetos a traves de un socket. Utilizo el ObjectInputStream y el ObjectOutputStream para enviar y recibir, pero me salta la excepcion.

Aqui os pongo la clase que instanciada deseo pasar:

class DatosUsuario implements java.io.Serializable{

    private String user;
    private char[] pass;

    public DatosUsuario(String user, char[] pass){
        this.user=user;
        this.pass=pass;
    }

    public DatosUsuario(DatosUsuario a){
        this.pass=a.pass;
        this.user=a.user;
    }

    public String getUser(){
        return user;
    }

    public char[] getPass(){
        return pass;
    }
}


Pero cuando intento hacer un writeObject me arroja el error: java.lang.ClassNotFoundException

Gracias de antemano.

sapito169

no uses sockets usa rmi te ase esas cosas muy faciles

Chuidiang

Hola:

¿Dónde te salta la excepción? ¿en el write o al hacer el read de ese Object en el otro lado?

En el lado del write no lo entiendo, porque no debería haber ese tipo de problemas. Si es en el read(), es posible que no hayas puesto la clase que vas a recibir en el classpath de ese ejecutable que recibe.

Se bueno.

nerckos

Los streams me los coge bien, me salta la exception cuando intento leer el objecto.

Chuidiang

Pues lo dicho, posiblemente en la parte del ejecutable que lee no esté esa clase en el classpath.

Se bueno.

nerckos

Podrias explicarte un poco mejor.....

Chuidiang

#6
Tienes dos ejecutables java, uno es el que envía y otro el que recibe. La clase que envías de un lado a otro es un .class. Pues bien, ese .class tiene que estar en el classpath de ambos ejecutables.

Concretando más, si has hecho, por ejemplo, dos proyectos de eclipse/netbeans, uno para el ejecutable que envía y otro para el ejecutable que recibe, la clase que envías debe estar en ambos proyectos.

Si no está en el proyecto del que escribe, pues simplemente no compilaría, no puedes hacer new de esa clase para enviarla, ya que no está en el proyecto, es como si no existiera.

Si no está en el proyecto que recibe, depende como lo hagas, sí puede compilar, pero en ejecución, cuando el socket la intente leer, no pordrá reconstruirla, porque no tiene esa clase por ningún lado y el error, en tiempo de ejecución, será ClassNotFound.

Se bueno.

Debci

Chuidiang el grande nos asiste!
Que sepas que sigo todos tus tutos y articulos!


Saludos

Chuidiang

bueno, bueno, que me voy a poner colorao  :P  ....

Se bueno.

nerckos

Gracias por tu respuesta.