Excepcion sun.awt.windows.WImage

Morlako
06 de Julio del 2004
Wenas, soy nuevo en la programacion de Java y tengo un problema con la serializacion:
es que cuando escribo en disco una clase utilizando la interface Serializable, me suelta la excepcion "java.io.NotSerializableException: sun.awt.windows.WImage" y no tengo ni idea de lo que puede ser.
He estado revisando el codigo durante semanas y no entiendo porque me da este error.
La clase que implemento es la siquiente:

class Configuracion implements Serializable
{
public JCheckBox v_c1,v_c2,n_c1,n_c2,w_c1,w_c2;
public String ruta_v,ruta_n, ruta_w;
static final long serialUID = 7482918481158178L;

public Configuracion()
{
v_c1=new JCheckBox();
v_c2=new JCheckBox();
n_c1=new JCheckBox();
n_c2=new JCheckBox();
w_c1=new JCheckBox();
w_c2=new JCheckBox();
ruta_v=new String();
ruta_n=new String();
ruta_w=new String();
}

private void readObject (ObjectInputStream in) throws IOException ,ClassNotFoundException
{
in.defaultReadObject();
}

private void writeObject (ObjectOutputStream out) throws IOException
{
out.defaultWriteObject();
}
}

y la forma que utilizo para salvar los elementos es:

try
{
FileOutputStream fi = new
FileOutputStream(config);
ObjectOutputStream os =new
ObjectOutputStream (fi);

os.writeObject(cfg);
os.close();
jd.dispose(); // JDialog para salvar los componentes
}
catch (IOException e)
{
error=1;

JOptionPane.showMessageDialog(null,
"Error de escritura en disco","ERROR", 0);
JOptionPane.showMessageDialog(null,e,"ERROR", 0);
}

que lo unico que hace es salvar varios componentes a disco. He estado mirando muchos manuales de Java en la serializacion, pero no se de donde sale ese error.

Agradeceria toda la ayuda posible. Gracias.

eldrum
06 de Julio del 2004
Solo puedes Serializar clases que sean serializables (bastante evidente).

Como consecuencia de ello si intentas serializar una imagen que no sea serializable (por ejemplo un Socket) obtendras ese error.

La mala notica es que en la mayoria de los casos la clase Image no es Serializable

Pedro
06 de Julio del 2004
La sun.awt.windows.WImage es la implementación para plataforma windows de la clase no serializable java.awt.Image que probablemente estás utilizando directa o indirectamente en tus objetos JCheckBox (tal vez mediante la clase ImageIcon).... Bueno, en resumen... la única solución que se me ocuerre es que los hagas transient y serializarlos "a mano"... héchale un vistazo a esto para más información: http://groups.google.com/groups?hl=en&lr=&ie=UTF-8&safe=off&th=ff02878d35d068ac&seekm=36AC2106.3310D692%40aimnet.com&frame=off