将ObjectInputStream添加到HashMap时出现NullPointer异常

时间:2014-07-10 11:45:22

标签: java nullpointerexception objectinputstream objectoutputstream

我正在尝试编写一个基本的聊天服务器,它将消息从一个客户端转发到另一个客户端。

我的客户端在另一台笔记本电脑上运行,服务器获取了我发送的用户名,所以ObjectInputStream不是null,用户名不是null?

这是HashMap和ObjectInputStream:

private Socket[] clientSocket = new Socket[100];
private ObjectInputStream[] fromClient = new ObjectInputStream[100];
private ObjectOutputStream[] toClient = new ObjectOutputStream[100];
private HashMap<String, ObjectInputStream> clientInputs= new HashMap<String, ObjectInputStream>();
private HashMap<String, ObjectOutputStream> clientOutputs= new HashMap<String, ObjectOutputStream>();;

这是我得到空指针异常的位:

//This is just for testing:
System.out.println("User name is :" +userName);
System.out.println("fromClient[i] is " +fromClient[i].toString());
Thread.sleep(1000);

//Add this user to all lists.
clientInputs.put(userName , (ObjectInputStream)fromClient[i]);*
clientOutputs.put(userName, (ObjectOutputStream)toClient[i]);
onlineUsers[i] = userName;

我得到:[第105行是clientInputs.put(...,...)行;我用*。标记的地方。

    User name is :hulo
    fromClient[i] is java.io.ObjectInputStream@147c5fc
    Exception in thread "Thread-0" java.lang.NullPointerException
        at AcceptConnections.addNextUser(AcceptConnections.java:105)
        at AcceptConnections.run(AcceptConnections.java:53)

我不知道这是否与它有关,但没有Thread.sleep(1000); NullPointerException在“用户名是”行之后但在“fromClient [i]”行之前出现。

编辑:我不确定我是否说清楚了,但是这些代码行是在我的客户端程序连接到服务器之后,因此用户名是在测试运行期间从客户端获取的用户名,因此ObjectInputStream肯定在工作。

1 个答案:

答案 0 :(得分:0)

看起来你没有初始化clientInputs。

可能会将您的声明更改为:

  

private HashMap clientInputs = new HashMap();