编辑:我遇到的问题是我使用了错误的套接字。现在已经解决了。Java空指针异常,请帮我理解为什么
嗨,
我正在研究一个包含套接字编程的java聊天客户端。然而,我开始连接时遇到了一个小问题,因为我得到了一个NullPointerException,我不明白为什么!
这是使烦恼代码:
try {
sock = new Socket(host, port);
Connection DaUberConnection = new Connection(sock);
} catch (UnknownHostException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
用于创建套接字的变量处一流水平的声明,完全如预期运行(我认为)。主机和端口已设置。
Socket sock;
String host;
int port;
据我所知,它是与我在一个空放错了地方扔的地方,但我实在看不出这是怎么挂在一起。
对不起,我的英语不好或nubieness在java :) 这将是黄金,如果有人能解释为什么发生这种情况!
完整的错误:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at clientpackage.Connection.<init>(Connection.java:24)
at clientpackage.Client$1.actionPerformed(Client.java:91)
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.AbstractButton.doClick(Unknown Source)
at javax.swing.plaf.basic.BasicMenuItemUI.doClick(Unknown Source)
at javax.swing.plaf.basic.BasicMenuItemUI$Handler.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)
你有没有设置'host'的值?如果不是,那么'host'将为空,并会导致异常 – debracey 2011-05-10 00:38:24
Connection.java的第24行是什么? – 2011-05-10 00:38:34
是的我现在已经为主机设置了一个“localhost”的值。 – Ms01 2011-05-10 00:40:46