Abrir arquivo

3 respostas
R

Olá este é meu 1º post aqui no GUJ
gostaria de uma ajuda se possivel.

estou fazendo um programa que gerencie uma locadora de vídeo. toda a parte de classes , janelas e relação entre elas está funcionando, o meu problema é quando eu vou tentar abrir um arquivo salvo por ele.. eu consigo abrir uma lista se esta lista tiver apenas 1 tipo por exemplo... a minha lista de Clientes está funcionando 100%, mas a minha lista de produtos não está funcionando. quando eu mando rodasr e chego na oarte em que ele vai ler o arquivo, ele me da um erro de :
Caused by: java.io.InvalidClassException: filme
onde o filme que ele me reclama é um tipo de produto(extends) de uma ListaProduto.

segue a baixo o meu método para abrir arquivo.. onde acho que pode estar o erro, visto que todo o resto funciona...

public static listaProduto abrirProduto(){
		try {
			boolean exists =(new File("Produtos.arq")).exists();
			Object var=new listaProduto();
			
			if (exists==true) {			
			FileInputStream fis = new FileInputStream("Produtos.arq");
			ObjectInputStream ois = new ObjectInputStream(fis);
			if (var==null){}
			else{
			var=(listaProduto)ois.readObject();
			ois.close();}
			return (listaProduto)var;}
			else
				{
				FileOutputStream fos = new FileOutputStream("Produtos.arq");
				ObjectOutputStream oos = new ObjectOutputStream(fos);
				oos.writeObject(var);
				oos.close();
				return (listaProduto)var;
				}
				
		} catch (FileNotFoundException e) {
			JOptionPane.showMessageDialog(null,"ERRO NULL");
			return null;
		} catch (IOException e) {
			JOptionPane.showMessageDialog(null,"ERRO IO");
			e.printStackTrace();
 //AQUI ELE CAI NO ERRO  java.io.InvalidClassException: filme; filme; no valid constructor
//testei o construtor do filme e aparentemente ele está correto..
			return null;
		} catch (ClassNotFoundException e) {
			
			JOptionPane.showMessageDialog(null,"ERRO CLASS");
			return null;
		}
		
	}
construtor do filme
import java.io.Serializable;
public class filme extends produto implements Serializable{

        
    private String diretor;
	private String atorPrincipal;
	private String atrizPrincipal;
	private int duracao;
	
	
	
	public filme(int cod,String titulo,int ano,double valor,String classificacao,String ator,String atriz,int duracao,String diretor,String tipo)
	{
		super(cod,titulo,ano,valor,classificacao);
		setAtorPrincipal(ator);
		setAtrizPrincipal(atriz);
		setDiretor(diretor);
		setDuracao(duracao);
		setTipo(tipo);
	}
e o construtor do produto que é chamado pelo filme é:
public  class produto 	
{

    //variaveis
	public String titulo,tipo;
	private int ano; 
	private double valor;	 
	private int codigo;	 
	private String classificacao;
	private boolean estado=true;
	
	       
    //sets
              
	public produto(int cod,String titulo,int ano,double valor,String classificacao)
	{
		setCodigo(cod);
		setTitulo(titulo);
		setAno(ano);
		setValor(valor);
		setClassificacao(classificacao);
            
	}

obrigado pela ajúda se possivel

3 Respostas

jandiro

Voce já tentou colocar o serialVersionUID nas suas classes possíveis de serialização?

R

acabei de tentar e ele me gera outro erro

java.io.InvalidClassException: filme; local class incompatible: stream classdesc serialVersionUID = 1350013702501195578, local class serialVersionUID = 1
R

ngm tem mais alguma dica? podendo ser outra coisa…

Criado 22 de junho de 2008
Ultima resposta 22 de jun. de 2008
Respostas 3
Participantes 2