猿问

如何修复“不可序列化异常:java.时间.格式.日期时间格式化程序”错误

我正在尝试使用对象输出流将数组列表中的所有对象保存到文件中。该对象的一个属性是本地日期,每当我尝试写入文件时,错误不可序列化异常:java.time.format.DateTime 格式化器返回,尽管没有任何本地日期的日期时间格式化程序


完整错误:


java.io.NotSerializableException: java.time.format.DateTimeFormatter

    at java.base/java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1185)

    at java.base/java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1553)

    at java.base/java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1510)

    at java.base/java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1433)

    at java.base/java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1179)

    at java.base/java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:349)

    at java.base/java.util.ArrayList.writeObject(ArrayList.java:791)

    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)

    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

    at java.base/java.lang.reflect.Method.invoke(Method.java:564)

    at java.base/java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:1130)

    at java.base/java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1497)

    at java.base/java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1433)

    at java.base/java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1179)

    at java.base/java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:349)

    at BikeNow.saveRent(BikeNow.java:330)

    at BikeNow.main(BikeNow.java:114)


开心每一天1111
浏览 148回答 1
1回答

慕虎7371278

这里没有太多可说的,但显然您在编写对象时正在尝试编写 DateTime 格式化程序。这使我相信在客户中有一个定义,但由于DTF没有实现可序列化,所以它爆炸了。最好的解决方案是编辑 Customer 类以正确序列化。另一种选择是将其填充到您的 Rent 类中,但如果字段是私有的,则可能无法做到这一点。
随时随地看视频慕课网APP

相关分类

Java
我要回答