gravação em arquivo

Bom Dia!

Sou Novo por aqui, e ainda bem “verde” em programação JAVA, estou tendo problema com gravação de arquivos… segue o meu codigo:

[code]package cadastrovector;

import javax.swing.*;
import java.util.Vector;

public class CadastroVector {

public static void main(String[] args) {
    String menu[] = {"Cria Empregado", "Insere Dependente", "Modifica Salario","Reajusta Salario","Visualiza Dados","Sair do Programa"};
    int comando = 0;
    int i = 0;
    String nome = "";
    String telefone = "";
    String endereco = "";
    String salario = "";
    String dependente;
    double doubleSalario = 0;
    cadastro dados = new cadastro();

    try{
    dados.recuperaCadastro();
    } catch (Exception exc) {
    System.out.println("Erro ao abrir o arquivo.");
    }
    
    while ((comando = JOptionPane.showOptionDialog(null, "Escolha uma opção", "Programa Cadastro Empregado", 
    JOptionPane.DEFAULT_OPTION, JOptionPane.PLAIN_MESSAGE, null, menu, null)) != 5) {
        switch (comando) {
            
            case 0:
                try{
                nome = JOptionPane.showInputDialog("Digite o nome: ");
                telefone = JOptionPane.showInputDialog("Digite o telefone: ");
                endereco = JOptionPane.showInputDialog("Digite o endereco: ");
                salario = JOptionPane.showInputDialog("Digite o salario: ");
                doubleSalario = Double.parseDouble(salario);
                dados.addEmpregado(nome, telefone, endereco, doubleSalario); 
                }catch (Exception exc){
                    JOptionPane.showMessageDialog(null, exc.getMessage(), "Error",  JOptionPane.ERROR_MESSAGE); 
                }
                break;
                
            case 1:           
                nome = JOptionPane.showInputDialog("Informe nome do empregado:");
                if (dados.verificaNome(nome)){
                    dependente = JOptionPane.showInputDialog("Informe nome do dependente:");
                    dados.recebeDependente(dependente,nome);
                }
                break;
                
            case 2:         
                nome = JOptionPane.showInputDialog("Insira o nome do Empregado: ");
                if (dados.verificaNome(nome)){
                    salario = JOptionPane.showInputDialog("Informe novo salario:");
                    doubleSalario = Double.parseDouble(salario);
                    dados.modificaSalario(nome, doubleSalario);
                }else{
                    JOptionPane.showMessageDialog(null,"Empregado nao encontrado");
                }
                break;
                
            case 3:
                salario = JOptionPane.showInputDialog("Digite a porcentagem de aumento:");
                doubleSalario = Double.parseDouble(salario);
                dados.reajusteEmpregados(doubleSalario);
                break;
                
            case 4:
                nome = JOptionPane.showInputDialog("Insira o nome do Empregado");
                dados.mostraEmpregado(nome);
                break;
                
            case 5:                
                System.exit(1);
        }
    }
}

}
[/code]


package cadastrovector;

import java.util.*;
import javax.swing.*;
import java.io.*;

public class cadastro {

    private final String arquivo = "empregados.dat";
    Vector<empregado> listaEmpregados = new Vector<empregado>();
    
    public void addEmpregado(String nome, String fone, String endereco, double salario) throws Exception {
        try{
                listaEmpregados.add(new empregado(nome, fone, endereco, salario));
                JOptionPane.showMessageDialog(null,"Empregado cadastrado com sucesso!");
                gravaCadastro();
            }
        catch(ArrayIndexOutOfBoundsException exception){
            System.out.println("Limite de Empregados atingido" + exception);           
        }
    }
    
    
        
    public boolean verificaNome(String nome){
        int i;
        for (i=0;i<listaEmpregados.size();i++){
        empregado c = (empregado) listaEmpregados.get(i);
        if (nome.equalsIgnoreCase(c.nomeEmpregado)){
            return true;
        }
    }
        return false;
    }
     
    
    public void reajusteEmpregados (Double porcentagem){
        empregado e;
        for (int i = 0; i >< listaEmpregados.size(); i++) {
            e = listaEmpregados.get(i);
            e.salarioEmpregado = e.salarioEmpregado + (((e.salarioEmpregado)/100)*porcentagem);
            listaEmpregados.set(i, e);
        }
        JOptionPane.showMessageDialog(null, "Salarios reajustados com Sucesso!");
    }
    
        
    public void recebeDependente(String dependente, String nome){
        int i;

        for (i=0;i<listaEmpregados.size();i++){
            empregado c;
            c=listaEmpregados.get(i);
            if (nome.equalsIgnoreCase(c.nomeEmpregado)){
               c.addDependente(dependente);
            }
    }
    }
        
            
    public boolean modificaSalario (String nome, double salario){
        
        empregado e;
        for(int i = 0; i><=listaEmpregados.size(); i++){
            e = listaEmpregados.get(i);
            if(e.nomeEmpregado.equalsIgnoreCase(nome)){
                e.salarioEmpregado = salario;
                listaEmpregados.set(i, e);
                return true;
            }
            }
        return false;
        }
    
     
    public void aaamostraEmpregado(String nome){     
        int i;  
        JTextArea saidaTela = new JTextArea(25,25);  
        for (i=0;i<listaEmpregados.size();i++){
            empregado c;
            c = listaEmpregados.get(i);
            saidaTela.append("["+(i+1)+"]" + " NOME: " + c.nomeEmpregado +     
                    "\n" + "TELEFONE: " + c.foneEmpregado +     
                    "\n" + "ENDERECO: " + c.enderecoEmpregado +  
                    "\n" + "SALARIO: " + c.salarioEmpregado +         
                    "\n" + "DEPENDENTES: " + c.mostraDependentes() + "\n\n\n");
        }       
        JOptionPane.showMessageDialog(null,saidaTela);
    }
    
    
        
    public void mostraEmpregado(String nome){     
        int i;  
        JTextArea saidaTela = new JTextArea(25,25);  
        for (i=0;i<listaEmpregados.size();i++){
            empregado c;
            c = listaEmpregados.get(i);
            if (c.nomeEmpregado.equalsIgnoreCase(nome)){
            saidaTela.append("["+(i+1)+"]" + " NOME: " + c.nomeEmpregado +     
                    "\n" + "TELEFONE: " + c.foneEmpregado +     
                    "\n" + "ENDERECO: " + c.enderecoEmpregado +  
                    "\n" + "SALARIO: " + c.salarioEmpregado +         
                    "\n" + "DEPENDENTES: " + c.mostraDependentes());
            }
        }       
        JOptionPane.showMessageDialog(null,saidaTela);
    }


  public void gravaCadastro() throws Exception {
    FileOutputStream objFileOS = new FileOutputStream(arquivo);
    ObjectOutputStream objOS = new ObjectOutputStream(objFileOS);
    objOS.writeObject(listaEmpregados);
    objOS.flush();
    objOS.close();
  }
  
  public void recuperaCadastro() throws Exception {
    File objFile = new File(arquivo);
    if (objFile.exists()) {
      FileInputStream objFileIS = new FileInputStream(arquivo);
      ObjectInputStream objIS = new ObjectInputStream(objFileIS);
      listaEmpregados = (Vector)objIS.readObject();
      objIS.close();
    }
  }
}
package cadastrovector;

public class dependente{
    String nomeDependente = "";
    
    public dependente(String nomeDependente){
    this.nomeDependente = nomeDependente;
}
}
package cadastrovector;

import java.util.Vector;
import javax.swing.*;

public class empregado extends cadastro {
    String nomeEmpregado;
    String foneEmpregado;
    String enderecoEmpregado;
    double salarioEmpregado;
    Vector><dependente> listaDependentes = new Vector<dependente>();
    
    
    public empregado(String nome, String telefone, String endereco, Double salario){
        this.nomeEmpregado = nome;
        this.foneEmpregado = telefone;
        this.enderecoEmpregado = endereco;
        this.salarioEmpregado = salario;
    }
         
    public void addDependente (String dependente){
        listaDependentes.add(new dependente (dependente));

    }
                             
    public String mostraDependentes(){
        int i;
        String stringDependentes = "";
        for (i=0;i<listaDependentes.size();i++){
            dependente d = (dependente) listaDependentes.get(i);
            stringDependentes += "\n" + d.nomeDependente + "; ";
       }
        return stringDependentes;
   }
}

me retorna erro logo ao adicionar um empregado…

Alguma dica?

Agradeço desde ja!

>

Sim,

substitua seu Vector por uma List e poste o stackstrace.
Sem analisarmos o erro é complicado.

Nossa que rapido O.o

blz, vou fazer isso, nao tem problema eu substituir por list, corrigir o propblema e depois voltar pra vector? é que ´pe trabalho de aula, e é exigido ser com vector.

ele mostra isso na saida:

run:
Erro ao abrir o arquivo.
CONSTRUÍDO COM SUCESSO (tempo total: 26 segundos)

e sempre ao tentar adicionar um empregado ele mostra a mensagem “ERRO”

Obrigado!

Não sei porque um professor exige que use Vector. É desatualizado e há API´s muito melhores atualmente, mas enfim.
Um detalhe, não dê nome a classes que iniciem com letra minuscula, é totalmente fora da convenção Java.

Sobre o seu erro, provavelmente não está encontrando o arquivo. Altere isso:

try{ dados.recuperaCadastro(); } catch (Exception exc) { System.out.println("Erro ao abrir o arquivo."); }

Para:

try{ dados.recuperaCadastro(); } catch (Exception exc) { System.out.println("Erro ao abrir o arquivo. " + e.printStackTrace()); }

Dessa forma vai apresentar todo o erro e não algo genérico.

[quote=nel]Não sei porque um professor exige que use Vector. É desatualizado e há API´s muito melhores atualmente, mas enfim.
Um detalhe, não dê nome a classes que iniciem com letra minuscula, é totalmente fora da convenção Java.

Sobre o seu erro, provavelmente não está encontrando o arquivo. Altere isso:

try{ dados.recuperaCadastro(); } catch (Exception exc) { System.out.println("Erro ao abrir o arquivo."); }

Para:

try{ dados.recuperaCadastro(); } catch (Exception exc) { System.out.println("Erro ao abrir o arquivo. " + e.printStackTrace()); }

Dessa forma vai apresentar todo o erro e não algo genérico.[/quote]

realmente, meu professor é bem trovador, fazendo a gente usar vector, embora alguns colegas de aula, com conhecimento um pouco mais avançado, tenham já alertado ele sobre API’s mais eficientes…

substituí, retornou isso:

run:
Exception in thread “main” java.lang.RuntimeException: Uncompilable source code - Erroneous tree type:
at cadastrovector.CadastroVector.main(CadastroVector.java:23)
Java Result: 1
CONSTRUÍDO COM SUCESSO (tempo total: 3 segundos)

acho que é por causa da variável “e” que eu não declarei, de que tipo ela deve ser?

desculpe, como eu disse, estou beeeeeeem verde no java.

no lugar do e.printStackTrace(), coloca o exc que vem da Exception do catch

e envie novamente o stackTrace

com o exc apareceu:

run:
Erro ao abrir o arquivo. java.io.WriteAbortedException: writing aborted; java.io.NotSerializableException: cadastrovector.empregado
CONSTRUÍDO COM SUCESSO (tempo total: 1 segundo)

estou tendo dificuldades com o printStackTrace…

Ae!!! Acho que consegui!!

run:
Erro ao abrir o arquivo. java.io.WriteAbortedException: writing aborted; java.io.NotSerializableException: cadastrovector.empregado
java.io.WriteAbortedException: writing aborted; java.io.NotSerializableException: cadastrovector.empregado
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1351)
at java.io.ObjectInputStream.readArray(ObjectInputStream.java:1685)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1341)
at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1964)
at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1888)
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1771)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1347)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:369)
at cadastrovector.cadastro.recuperaCadastro(cadastro.java:124)
at cadastrovector.CadastroVector.main(CadastroVector.java:23)
Caused by: java.io.NotSerializableException: cadastrovector.empregado
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1180)
at java.io.ObjectOutputStream.writeArray(ObjectOutputStream.java:1362)
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1170)
at java.io.ObjectOutputStream.access$300(ObjectOutputStream.java:161)
at java.io.ObjectOutputStream$PutFieldImpl.writeFields(ObjectOutputStream.java:1687)
at java.io.ObjectOutputStream.writeFields(ObjectOutputStream.java:478)
at java.util.Vector.writeObject(Vector.java:1073)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:962)
at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1480)
at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1416)
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1174)
at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:346)
at cadastrovector.cadastro.gravaCadastro(cadastro.java:114)
at cadastrovector.cadastro.addEmpregado(cadastro.java:16)
at cadastrovector.CadastroVector.main(CadastroVector.java:37)
CONSTRUÍDO COM SUCESSO (tempo total: 24 segundos)

Faça sua classe “Empregado” implementar a interface Serializable.

deste jeito?


package cadastrovector;

import java.util.*;
import java.io.Serializable;

public class empregado extends cadastro {
    String nomeEmpregado;
    String foneEmpregado;
    String enderecoEmpregado;
    double salarioEmpregado;
    Vector<dependente> listaDependentes = new Vector<dependente>();
    
    
    public empregado(String nome, String telefone, String endereco, Double salario){
        this.nomeEmpregado = nome;
        this.foneEmpregado = telefone;
        this.enderecoEmpregado = endereco;
        this.salarioEmpregado = salario;
    }
         
    public void addDependente (String dependente){
        listaDependentes.add(new dependente (dependente));

    }
                             
    public String mostraDependentes(){
        int i;
        String stringDependentes = "";
        for (i=0;i<listaDependentes.size();i++){
            dependente d = (dependente) listaDependentes.get(i);
            stringDependentes += "\n" + d.nomeDependente + "; ";
       }
        return stringDependentes;
   }
}

    

o stack ficou assim:

run:
Erro ao abrir o arquivo. java.io.WriteAbortedException: writing aborted; java.io.NotSerializableException: cadastrovector.empregado
java.io.WriteAbortedException: writing aborted; java.io.NotSerializableException: cadastrovector.empregado
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1351)
at java.io.ObjectInputStream.readArray(ObjectInputStream.java:1685)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1341)
at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1964)
at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1888)
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1771)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1347)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:369)
at cadastrovector.cadastro.recuperaCadastro(cadastro.java:124)
at cadastrovector.CadastroVector.main(CadastroVector.java:23)
Caused by: java.io.NotSerializableException: cadastrovector.empregado
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1180)
at java.io.ObjectOutputStream.writeArray(ObjectOutputStream.java:1362)
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1170)
at java.io.ObjectOutputStream.access$300(ObjectOutputStream.java:161)
at java.io.ObjectOutputStream$PutFieldImpl.writeFields(ObjectOutputStream.java:1687)
at java.io.ObjectOutputStream.writeFields(ObjectOutputStream.java:478)
at java.util.Vector.writeObject(Vector.java:1073)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:962)
at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1480)
at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1416)
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1174)
at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:346)
at cadastrovector.cadastro.gravaCadastro(cadastro.java:114)
at cadastrovector.cadastro.addEmpregado(cadastro.java:16)
at cadastrovector.CadastroVector.main(CadastroVector.java:40)
CONSTRUÍDO COM SUCESSO (tempo total: 19 segundos)

deste jeito?


package cadastrovector;

import java.util.*;
import java.io.Serializable;

public class empregado extends cadastro {
    String nomeEmpregado;
    String foneEmpregado;
    String enderecoEmpregado;
    double salarioEmpregado;
    Vector<dependente> listaDependentes = new Vector<dependente>();
    
    
    public empregado(String nome, String telefone, String endereco, Double salario){
        this.nomeEmpregado = nome;
        this.foneEmpregado = telefone;
        this.enderecoEmpregado = endereco;
        this.salarioEmpregado = salario;
    }
         
    public void addDependente (String dependente){
        listaDependentes.add(new dependente (dependente));

    }
                             
    public String mostraDependentes(){
        int i;
        String stringDependentes = "";
        for (i=0;i<listaDependentes.size();i++){
            dependente d = (dependente) listaDependentes.get(i);
            stringDependentes += "\n" + d.nomeDependente + "; ";
       }
        return stringDependentes;
   }
}

    

o stack ficou assim:

run:
Erro ao abrir o arquivo. java.io.WriteAbortedException: writing aborted; java.io.NotSerializableException: cadastrovector.empregado
java.io.WriteAbortedException: writing aborted; java.io.NotSerializableException: cadastrovector.empregado
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1351)
at java.io.ObjectInputStream.readArray(ObjectInputStream.java:1685)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1341)
at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1964)
at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1888)
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1771)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1347)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:369)
at cadastrovector.cadastro.recuperaCadastro(cadastro.java:124)
at cadastrovector.CadastroVector.main(CadastroVector.java:23)
Caused by: java.io.NotSerializableException: cadastrovector.empregado
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1180)
at java.io.ObjectOutputStream.writeArray(ObjectOutputStream.java:1362)
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1170)
at java.io.ObjectOutputStream.access$300(ObjectOutputStream.java:161)
at java.io.ObjectOutputStream$PutFieldImpl.writeFields(ObjectOutputStream.java:1687)
at java.io.ObjectOutputStream.writeFields(ObjectOutputStream.java:478)
at java.util.Vector.writeObject(Vector.java:1073)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:962)
at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1480)
at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1416)
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1174)
at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:346)
at cadastrovector.cadastro.gravaCadastro(cadastro.java:114)
at cadastrovector.cadastro.addEmpregado(cadastro.java:16)
at cadastrovector.CadastroVector.main(CadastroVector.java:40)
CONSTRUÍDO COM SUCESSO (tempo total: 19 segundos)

[/quote]

Cadê a implementação da interface?
Faça isso…

[code]import java.io.Serializable;

public class Empregado extends cadastro implements Serializable {
private static final long serialVersionUID = 1L;
// seu código
}[/code]

Certo!


package cadastrovector;

import java.util.*;
import java.io.Serializable;

public class empregado extends cadastro implements Serializable {
    private static final long serialVersionUID = 1L;
    String nomeEmpregado;
    String foneEmpregado;
    String enderecoEmpregado;
    double salarioEmpregado;
    Vector<dependente> listaDependentes = new Vector<dependente>();
    
    
    public empregado(String nome, String telefone, String endereco, Double salario){
        this.nomeEmpregado = nome;
        this.foneEmpregado = telefone;
        this.enderecoEmpregado = endereco;
        this.salarioEmpregado = salario;
    }
         
    public void addDependente (String dependente){
        listaDependentes.add(new dependente (dependente));

    }
                             
    public String mostraDependentes(){
        int i;
        String stringDependentes = "";
        for (i=0;i<listaDependentes.size();i++){
            dependente d = (dependente) listaDependentes.get(i);
            stringDependentes += "\n" + d.nomeDependente + "; ";
       }
        return stringDependentes;
   }
}

    

run:
Erro ao abrir o arquivo. java.io.WriteAbortedException: writing aborted; java.io.NotSerializableException: cadastrovector.empregado
java.io.WriteAbortedException: writing aborted; java.io.NotSerializableException: cadastrovector.empregado
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1351)
at java.io.ObjectInputStream.readArray(ObjectInputStream.java:1685)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1341)
at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1964)
at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1888)
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1771)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1347)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:369)
at cadastrovector.cadastro.recuperaCadastro(cadastro.java:124)
at cadastrovector.CadastroVector.main(CadastroVector.java:23)
Caused by: java.io.NotSerializableException: cadastrovector.empregado
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1180)
at java.io.ObjectOutputStream.writeArray(ObjectOutputStream.java:1362)
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1170)
at java.io.ObjectOutputStream.access$300(ObjectOutputStream.java:161)
at java.io.ObjectOutputStream$PutFieldImpl.writeFields(ObjectOutputStream.java:1687)
at java.io.ObjectOutputStream.writeFields(ObjectOutputStream.java:478)
at java.util.Vector.writeObject(Vector.java:1073)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:962)
at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1480)
at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1416)
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1174)
at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:346)
at cadastrovector.cadastro.gravaCadastro(cadastro.java:114)
at cadastrovector.cadastro.addEmpregado(cadastro.java:16)
at cadastrovector.CadastroVector.main(CadastroVector.java:40)
CONSTRUÍDO COM SUCESSO (tempo total: 16 segundos)

Muito obrigado por estarem me ajudando!! :smiley: :smiley: :smiley:

Faça o mesmo em sua classe Cadastro.
Será que terei de olhar todo o seu código…

implementei o serializable no cadastro e no dependente tambem

[code]package cadastrovector;

import java.util.;
import javax.swing.
;
import java.io.*;

public class cadastro implements Serializable{
private static final long serialVersionUID = 1L;

private final String arquivo = "empregados.dat";
Vector<empregado> listaEmpregados = new Vector<empregado>();

public void addEmpregado(String nome, String fone, String endereco, double salario) throws Exception {
    try{
            listaEmpregados.add(new empregado(nome, fone, endereco, salario));
            JOptionPane.showMessageDialog(null,"Empregado cadastrado com sucesso!");
            gravaCadastro();
        }
    catch(ArrayIndexOutOfBoundsException exception){
        System.out.println("Limite de Empregados atingido" + exception);           
    }
}


    
public boolean verificaNome(String nome){
    int i;
    for (i=0;i<listaEmpregados.size();i++){
    empregado c = (empregado) listaEmpregados.get(i);
    if (nome.equalsIgnoreCase(c.nomeEmpregado)){
        return true;
    }
}
    return false;
}
 

public void reajusteEmpregados (Double porcentagem){
    empregado e;
    for (int i = 0; i < listaEmpregados.size(); i++) {
        e = listaEmpregados.get(i);
        e.salarioEmpregado = e.salarioEmpregado + (((e.salarioEmpregado)/100)*porcentagem);
        listaEmpregados.set(i, e);
    }
    JOptionPane.showMessageDialog(null, "Salarios reajustados com Sucesso!");
}

    
public void recebeDependente(String dependente, String nome){
    int i;

    for (i=0;i<listaEmpregados.size();i++){
        empregado c;
        c=listaEmpregados.get(i);
        if (nome.equalsIgnoreCase(c.nomeEmpregado)){
           c.addDependente(dependente);
        }
}
}
    
        
public boolean modificaSalario (String nome, double salario){
    
    empregado e;
    for(int i = 0; i<=listaEmpregados.size(); i++){
        e = listaEmpregados.get(i);
        if(e.nomeEmpregado.equalsIgnoreCase(nome)){
            e.salarioEmpregado = salario;
            listaEmpregados.set(i, e);
            return true;
        }
        }
    return false;
    }

 
public void aaamostraEmpregado(String nome){     
    int i;  
    JTextArea saidaTela = new JTextArea(25,25);  
    for (i=0;i<listaEmpregados.size();i++){
        empregado c;
        c = listaEmpregados.get(i);
        saidaTela.append("["+(i+1)+"]" + " NOME: " + c.nomeEmpregado +     
                "\n" + "TELEFONE: " + c.foneEmpregado +     
                "\n" + "ENDERECO: " + c.enderecoEmpregado +  
                "\n" + "SALARIO: " + c.salarioEmpregado +         
                "\n" + "DEPENDENTES: " + c.mostraDependentes() + "\n\n\n");
    }       
    JOptionPane.showMessageDialog(null,saidaTela);
}


    
public void mostraEmpregado(String nome){     
    int i;  
    JTextArea saidaTela = new JTextArea(25,25);  
    for (i=0;i<listaEmpregados.size();i++){
        empregado c;
        c = listaEmpregados.get(i);
        if (c.nomeEmpregado.equalsIgnoreCase(nome)){
        saidaTela.append("["+(i+1)+"]" + " NOME: " + c.nomeEmpregado +     
                "\n" + "TELEFONE: " + c.foneEmpregado +     
                "\n" + "ENDERECO: " + c.enderecoEmpregado +  
                "\n" + "SALARIO: " + c.salarioEmpregado +         
                "\n" + "DEPENDENTES: " + c.mostraDependentes());
        }
    }       
    JOptionPane.showMessageDialog(null,saidaTela);
}

public void gravaCadastro() throws Exception {
FileOutputStream objFileOS = new FileOutputStream(arquivo);
ObjectOutputStream objOS = new ObjectOutputStream(objFileOS);
objOS.writeObject(listaEmpregados);
objOS.flush();
objOS.close();
}

public void recuperaCadastro() throws Exception {
File objFile = new File(arquivo);
if (objFile.exists()) {
FileInputStream objFileIS = new FileInputStream(arquivo);
ObjectInputStream objIS = new ObjectInputStream(objFileIS);
listaEmpregados = (Vector)objIS.readObject();
objIS.close();
}
}
}
[/code]

run:
Erro ao abrir o arquivo. java.io.WriteAbortedException: writing aborted; java.io.NotSerializableException: cadastrovector.dependente
java.io.WriteAbortedException: writing aborted; java.io.NotSerializableException: cadastrovector.dependente
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1351)
at java.io.ObjectInputStream.readArray(ObjectInputStream.java:1685)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1341)
at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1964)
at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1888)
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1771)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1347)
at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1964)
at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1888)
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1771)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1347)
at java.io.ObjectInputStream.readArray(ObjectInputStream.java:1685)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1341)
at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1964)
at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1888)
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1771)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1347)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:369)
at cadastrovector.cadastro.recuperaCadastro(cadastro.java:125)
at cadastrovector.CadastroVector.main(CadastroVector.java:23)
Caused by: java.io.NotSerializableException: cadastrovector.dependente
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1180)
at java.io.ObjectOutputStream.writeArray(ObjectOutputStream.java:1362)
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1170)
at java.io.ObjectOutputStream.access$300(ObjectOutputStream.java:161)
at java.io.ObjectOutputStream$PutFieldImpl.writeFields(ObjectOutputStream.java:1687)
at java.io.ObjectOutputStream.writeFields(ObjectOutputStream.java:478)
at java.util.Vector.writeObject(Vector.java:1073)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:962)
at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1480)
at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1416)
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1174)
at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1528)
at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1493)
at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1416)
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1174)
at java.io.ObjectOutputStream.writeArray(ObjectOutputStream.java:1362)
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1170)
at java.io.ObjectOutputStream.access$300(ObjectOutputStream.java:161)
at java.io.ObjectOutputStream$PutFieldImpl.writeFields(ObjectOutputStream.java:1687)
at java.io.ObjectOutputStream.writeFields(ObjectOutputStream.java:478)
at java.util.Vector.writeObject(Vector.java:1073)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:962)
at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1480)
at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1416)
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1174)
at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:346)
at cadastrovector.cadastro.gravaCadastro(cadastro.java:115)
at cadastrovector.cadastro.addEmpregado(cadastro.java:17)
at cadastrovector.CadastroVector.main(CadastroVector.java:40)
CONSTRUÍDO COM SUCESSO (tempo total: 53 segundos)

Oi!

ObjectInputStream objIS = new ObjectInputStream(objFileIS); listaEmpregados = (Vector)objIS.readObject();

O método readObject() somente aceita objetos Serializados.
O objeto Vector não é uma classe Serializada, logo, gera a exceção que testemunha.

Creio que necessite alterar o seu código ou pesquisar para ver como podes realizar a conversão desejada.
Abraços.

[quote=nel]Oi!

ObjectInputStream objIS = new ObjectInputStream(objFileIS); listaEmpregados = (Vector)objIS.readObject();

O método readObject() somente aceita objetos Serializados.
O objeto Vector não é uma classe Serializada, logo, gera a exceção que testemunha.

Creio que necessite alterar o seu código ou pesquisar para ver como podes realizar a conversão desejada.
Abraços.[/quote]

Caramba então é isso…
certo, vou ter que dar um jeito de converter mesmo, porque fomos “melhorando” o código durante as aulas… antes de ficar assim usava-mos vetores mesmo, então veio essa classe Vector e agora ele pediu pra implementar a gravação em arquivo…

muito obrigado por me dar uma luz! Já não sabia mais o que fazer!

Grande abraço!!

double post