由于工作中使用的是java swing开发的桌面程序,其中就有把JTextField等JComponent序列化生成二进制model文件的过程,有时会发现,输入数据后能正常序列化,有时就会出现java.io.NotSerializableException:javax.swing.text.GapContent$StickyPosition异常。经过测试发现:
如果是输入法是中文,在输入框中添加了中文或者数字等其他类型的字符串,然后生成二进制文件,就会出现上方异常;
如果是输入法是英文,在输入框中添加了英文或者数字等其他类型的字符串,然后生成二进制文件件,则可以正常生成二进制model文件。
因此,出现异常的可能是:
1,输入框中不支持中文类型的字符串,或者中文类型情况下输入的数字,所以生成二进制文件出现异常;
2,在初始化时,对应的输入框或者其他的JComponent定义了字体,而这种字体不能是中文或者与之相关的,所以才会导致生成二进制文件异常。
以上仅仅是个人工作中实测出来的情况和见解,如果异议,欢迎留言。