我正在使用ObjectInputStream和ObjectOutputStream为我的客户端通过TCP与服务器对话。客户端无法收到来自服务器的响应...当我在调试模式下进行时,响应顺利进行。但是,如果我没有中断点运行程序,它会抛出一个NullPointerException异常。Java ObjectInputStream readObject引发NullPointerException
初始化:
try
{
oos.writeObject(request);
serverResponse = (Message) ois.readObject();
output.append(serverResponse.data + "\n");
}
catch(Exception ex)
{
System.err.println("Error adding car to server: " + ex.getMessage());
return;
}
上面的代码抛出的NullPointerException异常:打破
ObjectOutputStream oos = null;
ObjectInputStream ois = null;
Socket socket = null;
socket = new Socket(server, port);
oos = new ObjectOutputStream(socket.getOutputStream());
oos.flush();
ois = new ObjectInputStream(socket.getInputStream());
代码。如果我使用了一个中断点并逐步完成,那么我得到的服务器响应就很好。我已确认在每种情况下服务器正在读取
任何帮助将不胜感激!
编辑堆栈跟踪EX:
java.lang.NullPointerException
at CarInventoryClient.actionPerformed(CarInventoryClient.java:251)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$000(Unknown Source)
at java.awt.EventQueue$1.run(Unknown Source)
at java.awt.EventQueue$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue$2.run(Unknown Source)
at java.awt.EventQueue$2.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
你提到'ex是结果为NULL.' ...你确定这就是你的意思(例外是!!)?或者你的意思是'serverResponse变成了NULL .'? – Saket
我不相信'ex'可能为null。我猜你的意思是你的'println()'*打印*“空”,这将是因为没有消息。 –
我已将堆栈跟踪添加到原始帖子。我的意思是消息是空的。它抛出一个NullPointerException ...这是什么意思?我注释掉了output.append行......只是在响应数据为空......没有修复空指针。 – DaveC