首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >处理异常Java

处理异常Java
EN

Stack Overflow用户
提问于 2013-04-13 19:39:55
回答 1查看 895关注 0票数 0

我正在尝试制作一个聊天服务器,它可以与我的Min克拉夫特客户端进行通信,并且工作正常,但我无法让客户端与服务器一起工作。这是客户

代码语言:javascript
复制
public class ClientChatHandler {
    public static ObjectOutputStream output;
    public static ObjectInputStream input;
    public static String message = "";
    public static String serverIP = "localhost";
    public static Socket connection;
}

public ClientChatHandler(String host){
    serverIP = host;
}

public static void startRunning(){
    try{
        connectToServer();
        setupStreams();
        whileChatting();
    } catch(EOFException eofException){
        Minecraft.getMinecraft().thePlayer.addChatMessage(Variables.color  + "\247a[Server] Client terminated the connection.");
    } catch(IOException ioException){
        ioException.printStackTrace();
    }
}

public static void connectToServer() throws IOException{
    Minecraft.getMinecraft().thePlayer.addChatMessage(Variables.color + "\247a[Server] Attempting to connect.");
    connection = new Socket(InetAddress.getByName(serverIP), 1337);
    Minecraft.getMinecraft().thePlayer.addChatMessage(Variables.color + "\247a[Server]         Connected to server.");
}

public static void setupStreams() throws IOException{
    try{
        output = new ObjectOutputStream(connection.getOutputStream());
        output.flush();
        input = new ObjectInputStream(connection.getInputStream()); 
    } catch(NullPointerException  Exception){
        Minecraft.getMinecraft().thePlayer.addChatMessage(Variables.color   + "\247a[Server] Error creating streams. Closing connection");
    } catch(IOException ioException){
        Minecraft.getMinecraft().thePlayer.addChatMessage(Variables.color  + "\247a[Server] Error creating streams. Closing connection");
    }   
}

public static void whileChatting() throws IOException{
    do{
        try{
            message = (String) input.readObject();
            Minecraft.getMinecraft().thePlayer.addChatMessage(Variables.color  + message);
        }catch(ClassNotFoundException classNotFoundException){
            Minecraft.getMinecraft().thePlayer.addChatMessage(Variables.color  + "\247a[Server]  \2474ERROR! Connecting, closing sockets.");
        }
    }while(!message.equals("server - end"));
}

public static void closeCrap(){
    Minecraft.getMinecraft().thePlayer.addChatMessage(Variables.color  +  "\247a[Server] Closing connection");
    try{
        output.close();
        input.close();
        connection.close();
    }catch(IOException ioException){
        ioException.printStackTrace();
    }
}

public static void sendMessage(String message){
    try{
        output.writeObject(message);
        output.flush();
        Minecraft.getMinecraft().thePlayer.addChatMessage(Variables.color +   message);
    } catch(IOException ioException){
    }
}

public static void showMessage(final String message){
    Minecraft.getMinecraft().thePlayer.addChatMessage(Methods.getLetterColor(Variables.ChatName Color) + Minecraft.getMinecraft().thePlayer.username + "\2477:\247f " + message);
}

现在我不断地得到这方面的java.lang.NullPointerException

代码语言:javascript
复制
output = new ObjectOutputStream(connection.getOutputStream());
output.flush();
input = new ObjectInputStream(connection.getInputStream());

我如何解决这个问题?

很抱歉,缺少信息,但是“我的世界”崩溃了,我从上面的代码中得到了一个空指针异常。

以下是一些文本:

代码语言:javascript
复制
    java.lang.NullPointerException
at net.minecraft.src.ClientChatHandler.whileChatting(ClientChatHandler.Java:79)
at org.renivivious.GuiConsole.mouseClicked(GuiConsole.java:671)
at net.minecraft.src.GuiScreen.handleMouseInput(GuiScreen.java:198)
at org.renivivious.GuiConsole.handleMouseInput(GuiConsole.java:356)
at net.minecraft.src.GuiScreen.handleInput(GuiScreen.java:172)
at net.minecraft.client.Minecraft.runTick(Minecraft.java:1394)
at net.minecraft.client.Minecraft.runGameLoop(Minecraft.java:731)
at net.minecraft.client.Minecraft.run(Minecraft.java:656)
at java.lang.Thread.run(Unknown Source)
--- END ERROR REPORT 8e0635c8 ----------
EN

回答 1

Stack Overflow用户

发布于 2020-11-03 23:38:20

代码语言:javascript
复制
public static String serverIP = "localhost";


public ClientChatHandler.....
    serverIP = host;

这里是您的错误,您正在初始化变量serverIP,但是当您实例化类时,您使用一个空字符串加载它。构造函数中有两个选项。

  1. 删除变量host
  2. 调用构造函数时,以参数"localhost"的形式发送
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15992090

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档