Java可序列化对象到文件
我有一个挥杆项目。我无法将整个主类保存到文件中Java可序列化对象到文件,java,serialization,Java,Serialization,我有一个挥杆项目。我无法将整个主类保存到文件中 public class GreenHouseMain extends JFrame implements ActionListener, MouseListener, Runnable, WindowListener, KeyListener, Serializable { //.....other components static GreenHouseMain ghMain; } public static void main
public class GreenHouseMain extends JFrame implements ActionListener,
MouseListener, Runnable, WindowListener, KeyListener, Serializable
{
//.....other components
static GreenHouseMain ghMain;
}
public static void main(String[] args)
{
ghMain = new GreenHouseMain();
}
public void startEvents()
{
suspended = false;
terminate = false;
jbStart.setEnabled(false);
worker = new Thread(new Runnable()
{
public void run()
{
try
{
//Other Code
} catch (ControllerException e)
{
try
{
Date now = new Date();
String log = "";
PrintWriter out = new PrintWriter(new BufferedWriter(
new FileWriter("error.log")));
if (e.getMessage() == "Unknown Windows Malfuction")
{
log = "ErrorCode=1, WindowMalfunction," + now;
} else
{
log = "ErrorCode=2, PowerOut," + now;
}
out.println(log);
jTextArea.append(log + "\n");
out.close();
out.flush();
ObjectOutputStream output = new ObjectOutputStream(
new FileOutputStream("dump.out"));
//It failed in here, says "java.lang.NullPointerException
output.writeObject(GreenHouseMain.ghMain);
output.flush();
} catch (IOException ex)
{
System.out.println(ex.getMessage());
}
}
}
});
worker.start();
}
你应该知道的几件事:
1.所有类都实现了可序列化接口
2.程序中有几个线程(不知道这是否是异常的原因)
3.我以前在控制台应用程序中用大约相同的代码将一个对象序列化为文件。不知道为什么在这里失败
位于javax.swing.plaf.basic.BasicScrollPaneUI.paint(未知源)
位于javax.swing.plaf.ComponentUI.update(未知源代码)
位于javax.swing.JComponent.paintComponent(未知源)
位于javax.swing.JComponent.paint(未知源代码)
位于javax.swing.JComponent.paintooffscreen(未知源)
位于javax.swing.repainmanager$PaintManager.paintDoubleBuffered(未知源)
位于javax.swing.repainmanager$PaintManager.paint(未知源)
位于javax.swing.RepaintManager.paint(未知源)
javax.swing.JComponent.\u(未知源)
位于javax.swing.JComponent.paintInstance(未知源代码)
位于javax.swing.repainmanager.paintDirtyRegions(未知源)
位于javax.swing.repainmanager.paintDirtyRegions(未知源)
位于javax.swing.repainmanager.seqPaintDirtyRegions(未知源)
位于javax.swing.SystemEventQueueUtilities$ComponentWorkRequest.run(未知源)
在java.awt.event.InvocationEvent.dispatch(未知源)处
位于java.awt.EventQueue.dispatchEvent(未知源)
位于java.awt.EventDispatchThread.pumpOneEventForFilters(未知源)
位于java.awt.EventDispatchThread.pumpEventsForFilter(未知源)
位于java.awt.EventDispatchThread.pumpEventsForHierarchy(未知源)
位于java.awt.EventDispatchThread.pumpEvents(未知源)
位于java.awt.EventDispatchThread.pumpEvents(未知源)
在java.awt.EventDispatchThread.run(未知源)
} catch (IOException ex) {
System.out.println(ex.getMessage());
}
应该是:
} catch (IOException ex) {
ex.printStackTrace();
}
这将为您提供更好的信息,最重要的是NullPointerException发生的确切位置以及到达该位置的确切位置。如果这并不能说明问题的原因,请在调试器中启动程序,并在该行上设置断点。详细异常如下:线程中的异常“AWT-EventQueue-0”java.lang。NullPointerException@Jack:重要的部分是后面的几行。