Tenho uma Classe “IO.java” que possui os métodos salvar e abrir.
import java.io.*;
import java.util.*;
import javax.swing.*;
public class IO {
public IO() {
}
public static void salvar(Vector v) {
try {
JFileChooser escolher = new JFileChooser();
int res = escolher.showSaveDialog(escolher.getParent());
if(res == JFileChooser.APPROVE_OPTION) {
FileOutputStream f = new FileOutputStream(escolher.getSelectedFile().getPath() + ".lvr");
ObjectOutputStream obj = new ObjectOutputStream(f);
obj.writeObject(v);
obj.close();
}
} catch(IOException e) {
JOptionPane.showMessageDialog(null,"Erro ao gravar arquivo!","ERRO",JOptionPane.ERROR_MESSAGE);
}
}
public static Vector abrir() {
Vector v = new Vector();
try {
JFileChooser escolher = new JFileChooser();
int res = escolher.showOpenDialog(null);
if (res == JFileChooser.APPROVE_OPTION) {
FileInputStream fi;
ObjectInputStream obj;
fi = new FileInputStream( escolher.getSelectedFile().getPath() );
obj = new ObjectInputStream(fi);
int i = 0;
v = (Vector)obj.readObject();
}
} catch(Exception exc){
JOptionPane.showMessageDialog(null,"Erro ao ler arquivo!","ERRO",JOptionPane.ERROR_MESSAGE);
}
return (v);
}
}
Criei a classe “Qualquer.java” para que ela seja salva em um arquivo de texto pela classe “IO.java”
public class Qualquer {
private String s;
public Qualquer(String s) {
this.s = s;
}
public void setS(String s) {
this.s = s;
}
public String getS() {
return s;
}
}
E uma classe “Teste.java” para executar o salvar e o abrir de um objeto do tipo “Qualquer”
import javax.swing.*;
import java.awt.*;
import java.util.*;
public class Teste {
public static void main(String args[]) {
Qualquer q = new Qualquer("Oi");
Vector v = new Vector();
v.add(q);
IO.salvar(v);
Vector v2 = new Vector();
v2 = IO.abrir();
Qualquer q2 = (Qualquer)v2.elementAt(0);
JOptionPane.showMessageDialog(null, q2.getS());
/*
String s = new String("Oi");
Vector v = new Vector();
v.add(s);
IO.salvar(v);
Vector v2 = new Vector();
v2 = IO.abrir();
String s2 = (String)v2.elementAt(0);
JOptionPane.showMessageDialog(null, s2);
*/
}
}
Teoricamente está tudo perfeito, mas só funciona com classes do próprio java, quando tento salvar classes que eu criei da erro. Isso pode ser verificado comentando a parte do “Teste.java” que salva uma String. Mas se eu deixar o código que tenta salvar o objeto do tipo “Qualquer” ocorre erro, e não é só com ela não, toda classe que não seja nativa do java da erro. Porque isso? Alguém pode me dizer o problema?