Java NotSerializableException-AquaPainter

Java NotSerializableException-AquaPainter,java,serialization,stack-trace,Java,Serialization,Stack Trace,一段时间以来,我一直在尝试解决序列化问题,不幸的是,我迷路了。如果有人能帮我找出问题所在,我将不胜感激。我已经在每个类中实现了Serializable 解决:问题是,一个类实现了可序列化,并且扩展了AbstractTableModel。我为表格模型创建了新的clas,问题就解决了 IO java.io.NotSerializableException: com.apple.laf.AquaPainter$AquaSingleImagePainter - field (class "com.app

一段时间以来,我一直在尝试解决序列化问题,不幸的是,我迷路了。如果有人能帮我找出问题所在,我将不胜感激。我已经在每个类中实现了Serializable

解决:问题是,一个类实现了可序列化,并且扩展了AbstractTableModel。我为表格模型创建了新的clas,问题就解决了

IO java.io.NotSerializableException: com.apple.laf.AquaPainter$AquaSingleImagePainter
- field (class "com.apple.laf.AquaTableHeaderBorder", name: "painter", type: "class com.apple.laf.AquaPainter")
- object (class "com.apple.laf.AquaTableHeaderBorder", com.apple.laf.AquaTableHeaderBorder@77eb5239)
- field (class "javax.swing.JComponent", name: "border", type: "interface javax.swing.border.Border")
- custom writeObject data (class "javax.swing.JComponent")
- object (class "sun.swing.table.DefaultTableCellHeaderRenderer", sun.swing.table.DefaultTableCellHeaderRenderer[Table.cellRenderer,-150,-16,0x0,invalid,alignmentX=0.0,alignmentY=0.0,border=com.apple.laf.AquaTableHeaderBorder@77eb5239,flags=25165832,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,horizontalAlignment=CENTER,horizontalTextPosition=TRAILING,iconTextGap=4,labelFor=,text=Cena,verticalAlignment=CENTER,verticalTextPosition=CENTER])
- field (class "javax.swing.table.JTableHeader", name: "defaultRenderer", type: "interface javax.swing.table.TableCellRenderer")
- custom writeObject data (class "javax.swing.table.JTableHeader")
- object (class "javax.swing.table.JTableHeader", javax.swing.table.JTableHeader[,0,0,450x16,invalid,alignmentX=0.0,alignmentY=0.0,border=,flags=16777544,maximumSize=,minimumSize=,preferredSize=,draggedDistance=0,reorderingAllowed=true,resizingAllowed=true,updateTableInRealTime=true])
- custom writeObject data (class "javax.swing.event.EventListenerList")
- object (class "javax.swing.event.EventListenerList", EventListenerList: 2 listeners:  type javax.swing.event.TableColumnModelListener listener javax.swing.JTable[,0,0,450x16,invalid,alignmentX=0.0,alignmentY=0.0,border=,flags=251674952,maximumSize=,minimumSize=,preferredSize=,autoCreateColumnsFromModel=true,autoResizeMode=AUTO_RESIZE_SUBSEQUENT_COLUMNS,cellSelectionEnabled=false,editingColumn=-1,editingRow=-1,gridColor=javax.swing.plaf.ColorUIResource[r=255,g=255,b=255],preferredViewportSize=java.awt.Dimension[width=450,height=400],rowHeight=16,rowMargin=1,rowSelectionAllowed=true,selectionBackground=com.apple.laf.AquaImageFactory$SystemColorProxy[r=49,g=102,b=202],selectionForeground=com.apple.laf.AquaImageFactory$SystemColorProxy[r=255,g=255,b=255],showHorizontalLines=true,showVerticalLines=true] type javax.swing.event.TableColumnModelListener listener javax.swing.table.JTableHeader[,0,0,450x16,invalid,alignmentX=0.0,alignmentY=0.0,border=,flags=16777544,maximumSize=,minimumSize=,preferredSize=,draggedDistance=0,reorderingAllowed=true,resizingAllowed=true,updateTableInRealTime=true])
- field (class "javax.swing.table.DefaultTableColumnModel", name: "listenerList", type: "class javax.swing.event.EventListenerList")
- object (class "javax.swing.table.DefaultTableColumnModel", javax.swing.table.DefaultTableColumnModel@4621e873)
- field (class "javax.swing.JTable", name: "columnModel", type: "interface javax.swing.table.TableColumnModel")
- custom writeObject data (class "javax.swing.JTable")
- object (class "javax.swing.JTable", javax.swing.JTable[,0,0,450x16,invalid,alignmentX=0.0,alignmentY=0.0,border=,flags=251658568,maximumSize=,minimumSize=,preferredSize=,autoCreateColumnsFromModel=true,autoResizeMode=AUTO_RESIZE_SUBSEQUENT_COLUMNS,cellSelectionEnabled=false,editingColumn=-1,editingRow=-1,gridColor=javax.swing.plaf.ColorUIResource[r=255,g=255,b=255],preferredViewportSize=java.awt.Dimension[width=450,height=400],rowHeight=16,rowMargin=1,rowSelectionAllowed=true,selectionBackground=com.apple.laf.AquaImageFactory$SystemColorProxy[r=49,g=102,b=202],selectionForeground=com.apple.laf.AquaImageFactory$SystemColorProxy[r=255,g=255,b=255],showHorizontalLines=true,showVerticalLines=true])
- custom writeObject data (class "javax.swing.event.EventListenerList")
- object (class "javax.swing.event.EventListenerList", EventListenerList: 1 listeners:  type javax.swing.event.TableModelListener listener javax.swing.JTable[,0,0,450x16,invalid,alignmentX=0.0,alignmentY=0.0,border=,flags=251658568,maximumSize=,minimumSize=,preferredSize=,autoCreateColumnsFromModel=true,autoResizeMode=AUTO_RESIZE_SUBSEQUENT_COLUMNS,cellSelectionEnabled=false,editingColumn=-1,editingRow=-1,gridColor=javax.swing.plaf.ColorUIResource[r=255,g=255,b=255],preferredViewportSize=java.awt.Dimension[width=450,height=400],rowHeight=16,rowMargin=1,rowSelectionAllowed=true,selectionBackground=com.apple.laf.AquaImageFactory$SystemColorProxy[r=49,g=102,b=202],selectionForeground=com.apple.laf.AquaImageFactory$SystemColorProxy[r=255,g=255,b=255],showHorizontalLines=true,showVerticalLines=true])
- field (class "javax.swing.table.AbstractTableModel", name: "listenerList", type: "class javax.swing.event.EventListenerList")
- object (class "zakaznik.Host", Zakaznik{nazev=rychly0, ucetDPH=27.0})
- custom writeObject data (class "java.util.ArrayList")
- object (class "java.util.ArrayList", [Zakaznik{nazev=rychly0, ucetDPH=27.0}])
- field (class "zakaznik.Zakaznici", name: "rychly", type: "interface java.util.List")
- root object (class "zakaznik.Zakaznici", zakaznik.Zakaznici@60ab6b6f)

从跟踪中可以看到zakaznik.Host有一个对AbstractTableModel(Swing类)的字段引用。序列化GUI毫无意义。最快的修复方法是将其标记为瞬态,但您的应用程序架构可能需要更改。

例外情况是,您无法序列化Apple的一个类(
com.Apple.laf.AquaPainter$AquaSingleImagePainter
)。提供自定义序列化逻辑以仅存储有关此
AquaPainter
类的足够信息,以便您可以在反序列化时重新创建它。这是因为某些类使用AbstractTableModel进行了扩展?谢谢,您是对的。我无法序列化使用AbstracTableModel扩展的类。