java.io.NotSerializableException
Habe ich diese Ausnahme und ich verstehe nicht, warum es wäre geworfen oder, wie soll ich es handhaben.
try {
os.writeObject(element);
} catch (IOException e) {
e.printStackTrace();
}
Wo element
ist ein TransformGroup
mit einigen anderen TransformGroups
eine Instanz der Klasse Atom:
public class Atom extends Group implements Serializable{
float pozX,pozY;
Group group= new Group();
Color3f blue = new Color3f(new Color(255));
Color3f black = new Color3f(new Color(0));
Sphere AtSph=new Sphere();
public Atom(final float WEIGHT, final int BOUNDS,final float radius,Color3f color)
{
AppSetting ap= new AppSetting(color, black);
AtSph=new Sphere(radius,1,100,ap);
}
}
Die vollständige Fehlerprotokoll:
java.io.NotSerializableException: javax.media.j3d.TransformGroup
at java.io.ObjectOutputStream.writeObject0(Unknown Source)
at java.io.ObjectOutputStream.writeObject(Unknown Source)
at cls.MolecularBuilder.addAtom(MolecularBuilder.java:511)
at cls.MolecularBuilder$Console.HidrogenItemActionPerformed(MolecularBuilder.java:897)
at cls.MolecularBuilder$Console$2.actionPerformed(MolecularBuilder.java:746)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.AbstractButton.doClick(Unknown Source)
at javax.swing.plaf.basic.BasicMenuItemUI.doClick(Unknown Source)
at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$200(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
Hinweis: "AppSetting (Atom-Klasse) ist nur eine benutzerdefinierte Klasse, die Sie erweitert Aussehen .
Sieht aus wie
javax.media.j3d.TransformGroup
selbst nicht Serializable implementieren
InformationsquelleAutor Bujanca Mihai | 2012-12-15
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die Felder des Objekts haben wiederum Ihre Felder, von denen einige nicht umsetzen
Serializable
. In Ihrem Fall ist das säumige KlasseTransformGroup
. Wie es zu lösen?Serializable
transient
Hinzufügen, um dieses ausgezeichnete Antwort: wenn Sie Ihre Daten und die Dritte Partei, möchten Sie vielleicht, um wickeln Sie die Dritte Klasse in eine eigene Klasse, die implementiert
Serializable
und verwendetreadObject()
undwriteObject()
manuell serialisieren Sie die Daten der Dritten Klasse. In einigen Fällen könnte dies ein sinnvoller Ansatz. stackoverflow.com/a/12963580/1208581InformationsquelleAutor Bozho
Manchmal "java.io.NotSerializableException" tritt auf, wenn Sie serialisieren eines innere Instanz der Klasse weil:
Ref: Das Serializable-Interface
InformationsquelleAutor Tho
Machen die Klasse serializable implementieren die Schnittstelle
java.io.Serializable
.java.io.Serializable
- Marker-Interface, das keine Methoden.ObjectOutputStream
sich, dass dieses Objekt einer serialisierbaren Objekt.InformationsquelleAutor Prabhakar