Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 这是什么?_Java_Oop_Model View Controller_Exception Handling_Ioexception - Fatal编程技术网

Java 这是什么?

Java 这是什么?,java,oop,model-view-controller,exception-handling,ioexception,Java,Oop,Model View Controller,Exception Handling,Ioexception,我试图从GUI和模型类中的arraylist中获取数据,然后将它们放入另一个arraylist中。每次代码运行时,它都可以正常工作,但是当我关闭应用程序并且序列化程序代码运行时,就会抛出IOException 我从模型类访问的唯一东西是arraylist,但我在其他类中访问这个数组列表,我没有问题 最初,我在模型类中添加了arraylist,我假设这就是引发异常的原因,所以我将其移动到了另一个类中,但是仍然会引发异常 我在表单上尝试了其余的事件处理程序,但这是唯一导致异常的事件处理程序 以下是导

我试图从GUI和模型类中的arraylist中获取数据,然后将它们放入另一个arraylist中。每次代码运行时,它都可以正常工作,但是当我关闭应用程序并且序列化程序代码运行时,就会抛出IOException

我从模型类访问的唯一东西是arraylist,但我在其他类中访问这个数组列表,我没有问题

最初,我在模型类中添加了arraylist,我假设这就是引发异常的原因,所以我将其移动到了另一个类中,但是仍然会引发异常

我在表单上尝试了其余的事件处理程序,但这是唯一导致异常的事件处理程序

以下是导致异常发生的代码:

private void btnRequestAppointmentActionPerformed(java.awt.event.ActionEvent evt) {                                                      
    ArrayList<IAccountStrategy> observers;
    observers = model.getObservers();

    IAccountStrategy xx;

    xx = observers.get(accountIndex);     

    ArrayList<Appointments> appointment;
    appointment = xx.getAppointments();     
    Appointments app = new Appointments();

    setAppointmentDates(appointment, app);
    setAppointmentPatient(appointment, app);               
    xx.getAppointments().add(app);

    JOptionPane.showMessageDialog(null, "Appointment Requested. A Secretary will check the request shortly");
}         
以下是堆栈跟踪:

java.io.NotSerializableException: patientmanagementsystemv2.items.Appointments
    at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1184)
    at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:348)
    at java.util.ArrayList.writeObject(ArrayList.java:766)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:1140)
    at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1496)
    at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1432)
    at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1178)
    at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1548)
    at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1509)
    at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1432)
    at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1178)
    at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:348)
    at java.util.ArrayList.writeObject(ArrayList.java:766)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:1140)
    at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1496)
    at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1432)
    at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1178)
    at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1548)
    at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1509)
    at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1432)
    at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1178)
    at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:348)
    at patientmanagementsystemv2.gui.PatientHomePage.formWindowClosing(PatientHomePage.java:294)
    at patientmanagementsystemv2.gui.PatientHomePage.access$000(PatientHomePage.java:28)
    at patientmanagementsystemv2.gui.PatientHomePage$1.windowClosing(PatientHomePage.java:133)
    at java.awt.Window.processWindowEvent(Window.java:2054)
    at javax.swing.JFrame.processWindowEvent(JFrame.java:305)
    at java.awt.Window.processEvent(Window.java:2013)
    at java.awt.Component.dispatchEventImpl(Component.java:4889)
    at java.awt.Container.dispatchEventImpl(Container.java:2297)
    at java.awt.Window.dispatchEventImpl(Window.java:2746)
    at java.awt.Component.dispatchEvent(Component.java:4711)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:760)
    at java.awt.EventQueue.access$500(EventQueue.java:97)
    at java.awt.EventQueue$3.run(EventQueue.java:709)
    at java.awt.EventQueue$3.run(EventQueue.java:703)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:84)
    at java.awt.EventQueue$4.run(EventQueue.java:733)
    at java.awt.EventQueue$4.run(EventQueue.java:731)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:730)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:205)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)                              
我正在努力完成今晚的计划,但我已经努力修复了几个小时。已通知任何帮助。

Stacktrace 就像在评论中提到的,你可以在stacktrace中找到原因

发现策略 使用包的名称查找第一个条目。在您的案例中,请查找
patientmanagementsystemv2.gui

java.io.NotSerializableException: patientmanagementsystemv2.items.Appointments
    ...
    at patientmanagementsystemv2.gui.PatientHomePage.formWindowClosing(PatientHomePage.java:294)
    at patientmanagementsystemv2.gui.PatientHomePage.access$000(PatientHomePage.java:28)
    at patientmanagementsystemv2.gui.PatientHomePage$1.windowClosing(PatientHomePage.java:133)
    ...
在stacktrace的顶部,您可以看到在patientmanagementsystemv2.gui.PatientThomepage.formWindowClosing(PatientThomepage.java:294上有一个
NotSerializableException

问题
java.io.NotSerializableException:patientmanagementsystemv2.items.Appointment

引用类型
Appointments
似乎没有实现
Serializable
,并且由于尝试在方法
formWindowClosing
中使用
out.writeObject(model)
appoints
的实例进行序列化,因此引发了错误

修改约会 如果你拥有这个班级,就写吧

public class Appointments implements Serializable {
    // ...
}
但您希望出现
IOException
使用
catch(IOException ex)
可以捕获
IOException
及其所有子类,包括
notserializableeexception

Stacktrace 就像在评论中提到的,你可以在stacktrace中找到原因

发现策略 查找带有包名称的第一个条目。在您的示例中,查找
patientmanagementsystemv2.gui

java.io.NotSerializableException: patientmanagementsystemv2.items.Appointments
    ...
    at patientmanagementsystemv2.gui.PatientHomePage.formWindowClosing(PatientHomePage.java:294)
    at patientmanagementsystemv2.gui.PatientHomePage.access$000(PatientHomePage.java:28)
    at patientmanagementsystemv2.gui.PatientHomePage$1.windowClosing(PatientHomePage.java:133)
    ...
在stacktrace的顶部,您可以看到在patientmanagementsystemv2.gui.PatientThomepage.formWindowClosing(PatientThomepage.java:294上有一个
NotSerializableException

问题
java.io.NotSerializableException:patientmanagementsystemv2.items.Appointment

引用类型
Appointments
似乎没有实现
Serializable
,并且由于尝试在方法
formWindowClosing
中使用
out.writeObject(model)
appoints
的实例进行序列化,因此引发了错误

修改约会 如果你拥有这个班级,就写吧

public class Appointments implements Serializable {
    // ...
}
但您希望出现
IOException

带有
catch(IOException ex)
如果捕获一个
IOException
及其所有子类,包括
NotSerializableException

检查stacktrace,它会准确地告诉您抛出了什么行,我如何在Netbeans中执行此操作?我似乎在任何地方都找不到它。请将堆栈跟踪粘贴到这里!它包含与抛出异常的行相关的信息。@TopL它检查控制台/输出window@TopLit检查控制台检查堆栈跟踪,它会准确地告诉您抛出了什么行。我如何在Netbeans中执行此操作?我似乎在任何地方都找不到它。请将堆栈跟踪粘贴到此处!它包含与抛出异常的行相关的信息。@TopLit检查控制台/输出window@TopLit检查控制台