Objetos Serializáveis, problemas com exceções

3 respostas
digovs

Pessoal, eu estava fazendo meu trabalho da faculdade e tals, tava tudo dando certo eu conseguiu guardar meus objetos em arquivos e usa-los quando quisesse.

Só que de uma hora para outra, eu nem estava mexendo em nada que envolvesse os arquivos e parou de funcionar.

Simplesmente não consigo acessar nenhum arquivo e nem consigo criar novos arquivos de objetos.

O que será que pode ter acontecido?

O erro eh esse:

um dos…
java.io.WriteAbortedException: writing aborted; java.io.NotSerializableException: java.util.Scanner

Meu programa parou de funcionar totalmente por causa desse erro com Serialização, só que eu não mexi em nada disso. O código de inserção está igual a antes - quando funcionava - porém agora da esse erro.

O erro ocorre quando eu tento fazer isso:

objInp = new ObjectInputStream(new FileInputStream(new File(login))); p = (Membro) objInp.readObject();

Por algum motivo a serialização foi prejudicada.

Me ajudem por favoor.

3 Respostas

davidbuzatto

Leia a excessão:
Vc está tentando serializar um java.util.Scanner.

O objeto da classe que você está tentando serializar provavelmente tem um membro de instância do tipo java.util.Scanner

[]´s

digovs

Obrigado, mas ontem eu tinha um problema, hoje depois de apenas reiniciar o comptador tenho outro problema.

segue o erro:

01/12/2009 10:44:39 trabalhopoo.Arquivo MostraDados
SEVERE: null
java.io.InvalidClassException: trabalhopoo.Membro; trabalhopoo.Membro; no valid constructor
at java.io.ObjectStreamClass.checkDeserialize(ObjectStreamClass.java:730)
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1750)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1346)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:368)
at trabalhopoo.Arquivo.MostraDados(Arquivo.java:399)
at trabalhopoo.RH.ConsultaMembro(RH.java:197)
at trabalhopoo.Main.main(Main.java:55)

Caused by: java.io.InvalidClassException: trabalhopoo.Membro; no valid constructor
at java.io.ObjectStreamClass.(ObjectStreamClass.java:488)
at java.io.ObjectStreamClass.lookup(ObjectStreamClass.java:327)
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1123)
at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:343)
at trabalhopoo.Arquivo.InsereMembro(Arquivo.java:285)
at trabalhopoo.RH.InsereMembro(RH.java:165)
at trabalhopoo.Main.main(Main.java:35)

O erro está no mesmo lugar:
ObjectOutputStream objOut = new ObjectOutputStream(
new FileOutputStream( new File( login ) ) );
 Membro p = new Membro(nome, login, senha, dir, sal);
                              
objOut.writeObject( p ); // O erro está aqui, aparentemente a função não está funcionando, pois o objeto p está sendo instanciado certo
objOut.flush();               // Tem algo a ver com a serialização, só que a classe Membro está implementando Serializable
objOut.close();

System.out.println(p.getNome()+" - "+p.getDiretoria()+" - "+p.getDiretoria()+" - "+p.getSalario());

System.out.println( "Arquivo gerado com sucesso!" );

Alguém em ajuda?

davidbuzatto

Vc lê as excessões que são disparadas?

Olhe o erro:
java.io.InvalidClassException: trabalhopoo.Membro; trabalhopoo.Membro; no valid constructor

No seu caso vc precisa implementar o construtor padrão (sem argumentos) da classe.
Para mais detalhes, leia o contrato da interface Serializable: http://java.sun.com/javase/6/docs/api/java/io/Serializable.html

[]´s

Criado 1 de dezembro de 2009
Ultima resposta 1 de dez. de 2009
Respostas 3
Participantes 2