Olá…
Em minha aplicação utilizo um Objeto chamado Propriedades, que encapsulam as propriedades de um determinado vídeo…
Segue abaixo a classe:
public class Propriedades extends Informacao implements java.io.Serializable
{
private String versao;
private String data;
private String autor;
private String local;
public Propriedades(String versao, String data, String autor, String local)
{
super(TipoDeInformacao.PROPRIEDADES_DE_VIDEO);
this.versao = versao;
this.data = data;
this.autor = autor;
this.local = local;
}
public TipoDeInformacao getTipoDeInformacao()
{
return super.getTipoDeInformacao();
}
public String getData(){ return data; }
public String getVersao(){ return versao; }
public String getLocal(){ return local; }
public String getAutor(){ return autor; }
public boolean equals(Propriedades propriedades)
{
if( (this.versao).equals(propriedades.getVersao()) &&
(this.autor).equals(propriedades.getAutor()) &&
(this.local).equals(propriedades.getLocal()) &&
(this.data).equals(propriedades.getData()))
{
return true;
}
return false;
}
public String toString()
{
if(!autor.equals(""))
{
return autor;
}
else if( !local.equals("") )
{
return local;
}
else if( !data.equals("") )
{
return data;
}
else if( !versao.equals("") )
{
return versao;
}
return "";
}
}
Minha aplicação é baseada no modelo cliente-servidor e objetos Propriedades circulam na rede entre os Clientes e o Servidor. Esses objetos são jogados e recebidos na rede através de Sockets…Todavia adotei como padrão a troca de objetos Mensagem, assim, as propriedades são encapsuladas em Objetos Mensagem:
import java.io.Serializable;
/**
*
* @author usuario
*/
public class Mensagem <T> implements Serializable
{
private TipoDeMensagem tipoDeMensagem;//É um enum
private T dados;
public Mensagem(TipoDeMensagem tipoDeMensagem)
{
this.tipoDeMensagem = tipoDeMensagem;
this.dados = null;
}
public Mensagem(TipoDeMensagem tipoDeMensagem, T dados)
{
this.tipoDeMensagem = tipoDeMensagem;
this.dados = dados;
}
public TipoDeMensagem getTipoDeMensagem()
{
return tipoDeMensagem;
}
public T getDados()
{
return this.dados;
}
}
Eu envio uma Mensagem que carrega as Propriedades com o seguinte trecho de código:
Mensagem<Propriedades> mensagemPropriedades = new Mensagem(TipoDeMensagem.TRANSPORTE_PROPRIEDADES_DE_VIDEO,propriedadesDeVideo);
saidaObjeto.writeObject(mensagemPropriedades);
saidaObjeto.flush();
Onde “saidaObjeto” é um ObjectOutputStream.
E recebo uma Mensagem que carrega as Propriedades com o seguinte código:
Mensagem<Propriedades> mensagemPropriedades = (Mensagem<Propriedades>)entradaObjeto.readObject();
Todavia, no exato trecho acima, minha aplicação gera uma exceção:
[color=red]
java.io.InvalidClassException: processamento.cadastro.Propriedades; processamento.cadastro.Propriedades; no valid constructor[/color]
[color=blue]at java.io.ObjectStreamClass.checkDeserialize(ObjectStreamClass.java:713)
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1733)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329)
at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1947)
at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1871)
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1753)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:351)
at “trecho acima”[/color]
Gostaria de saber o que pode estar havendo…
