序列化对象Java的构造函数中出现不可理解的错误
我的程序中有一个非常讨厌的bug,我完全不知道为什么我不能保存我的数据库。也许你能帮我 我有一个带有saveMethod的持久性类序列化对象Java的构造函数中出现不可理解的错误,java,database,save,serializable,Java,Database,Save,Serializable,我的程序中有一个非常讨厌的bug,我完全不知道为什么我不能保存我的数据库。也许你能帮我 我有一个带有saveMethod的持久性类 import java.io.*; import java.nio.file.Path; import java.nio.file.Paths; import java.util.ArrayList; import java.util.stream.Collectors; public class Persistence{ Path path; public
import java.io.*;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.stream.Collectors;
public class Persistence{
Path path;
public static void saveDatabase(Database database)
{
try{
File file = new File("C:/Users/krystian/Desktop/KrystianProject/TravelClub5050/database.txt");// create a new database for each passenger
//File file = new File("C:/Users/Monica/Desktop/TravelClub5050/TravelClub5050/datebase.txt");
file.createNewFile();
FileOutputStream file1= new FileOutputStream(file.getAbsolutePath(),false);//getting the "C:/USER/MONICA/DESKTOP/...."+... - FROM ABOVE!
//FileOutputStream file1= new FileOutputStream("C:/Users/Monica/Desktop/TravelClub5050/TravelClub5050/datebase.txt",false);
ObjectOutputStream out = new ObjectOutputStream(file1);
out.writeObject(database);
file1.close();
out.close();
}
catch (IOException e)
{
System.out.println("Something went wrong with Save Database");
}
}
当我试图创建新的票证时,我在PotentialTicket类中遇到了问题
Pet pet; // for add -ons
Laguage laguage; // i create those object in a method in Potential ticket class
Pet pet1; // those too
Laguage laguage1;
public class PotentialTicket {
passenger.addTicket(new Ticket(departureDestination.getText(), arrivalDestination.getText(),Integer.parseInt(nPassangers.getText()),comboD.getSelectedItem().toString(),
comboM.getSelectedItem().toString(),comboY.getSelectedItem().toString(),
comboD1.getSelectedItem().toString(),comboM1.getSelectedItem().toString(),comboY1.getSelectedItem().toString(),pris,finalDate.getText(), ticketStatus,laguage, pet)); // this is working i can save my database correctly
Persistence.saveDatabase(db);
System.out.println("Saving");
但当我使用Laguage类fx laguage1的另一个对象代替Laguage时,它会在持久性类中捕获IOE异常
passenger.addTicket(new Ticket(departureDestination.getText(), arrivalDestination.getText(),Integer.parseInt(nPassangers.getText()),comboD.getSelectedItem().toString(),
comboM.getSelectedItem().toString(),comboY.getSelectedItem().toString(),
comboD1.getSelectedItem().toString(),comboM1.getSelectedItem().toString(),comboY1.getSelectedItem().toString(),pris,finalDate.getText(), ticketStatus,laguage1, pet1));
Persistence.saveDatabase(db);
System.out.println("Saving");
如果有任何帮助,我将不胜感激
java.io.NotSerializableException: Laguage
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1184)
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:762)
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:483)
at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:988)
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:762)
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:483)
at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:988)
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 Persistence.saveDatabase(Persistence.java:21)
at PotentialTicket$6.actionPerformed(PotentialTicket.java:440)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2346)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
at java.awt.Component.processMouseEvent(Component.java:6525)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3322)
at java.awt.Component.processEvent(Component.java:6290)
at java.awt.Container.processEvent(Container.java:2234)
at java.awt.Component.dispatchEventImpl(Component.java:4881)
at java.awt.Container.dispatchEventImpl(Container.java:2292)
at java.awt.Component.dispatchEvent(Component.java:4703)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4898)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4533)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4462)
at java.awt.Container.dispatchEventImpl(Container.java:2278)
at java.awt.Window.dispatchEventImpl(Window.java:2739)
at java.awt.Component.dispatchEvent(Component.java:4703)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:751)
at java.awt.EventQueue.access$500(EventQueue.java:97)
at java.awt.EventQueue$3.run(EventQueue.java:702)
at java.awt.EventQueue$3.run(EventQueue.java:696)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:86)
at java.awt.EventQueue$4.run(EventQueue.java:724)
at java.awt.EventQueue$4.run(EventQueue.java:722)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:721)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
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)
是否要共享异常的堆栈跟踪?没有这一点,我们什么也不做,只是猜测——这毫无意义……java.io.NotSerializableException:Laguage意味着类Laguage也应该序列化?请将完整堆栈跟踪发布到问题中。@Boristeider doneOk感谢灵感,我错过了在一个类中实现Serializable