Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0 at com.example.main...

本文介绍了在使用Java Socket编程时遇到的'Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0'错误,该错误源于在运行时未提供必要的参数。解决方法包括在IntelliJ IDEA和Eclipse中设置Program arguments以避免运行时错误。

按照网上示例写了下面这个Socket案例,但是运行不起来(IntelliJ IDEA 2017工具),代码如下:

package com.example.demo.RUNOOB.NetWorking;
import java.net.*;
import java.io.*;

public class GreetingServer extends Thread {
    private ServerSocket serverSocket;

    public GreetingServer(int port) throws IOException {
        serverSocket = new ServerSocket(port);
        serverSocket.setSoTimeout(10000);
    }

    public void run() {
        while(true) {
            try {
                System.out.println("等待远程连接,端口号为:" + serverSocket.getLocalPort() + "...");
                Socket server = serverSocket.accept();
                System.out.println("远程主机地址:" + server.getRemoteSocketAddress());
                DataInputStream in = new DataInputStream(server.getInputStream());
                System.out.println(in.readUTF());
                DataOutputStream out = new DataOutputStream(server.getOutputStream());
                out.writeUTF("谢谢连接我:" + server.getLocalSocketAddress() + "\nGoodbye!");
                server.close();
            }
            catch (SocketTimeoutException s) {
                System.out.println("Socket timed out!");
                break;
            }
            catch (IOException e) {
                e.printStackTrace();
                break;
            }
        }
    }

    public static void main(String[] args) {
        int port = Integer.parseInt(args[0]);
        try {
            Thread t = new GreetingServer(port);
            t.run();
        }
        catch (IOException e) {
            e.printStackTrace();
        }
    }
}

错误报示:Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0 at com.example.demo.RUNOOB.NetWorking.GreetingServer.main(GreetingServer.java:38)

经过细细检查,问题出在:int port = Integer.parseInt(args[0]);,这里调用了 args[0],所以在程序运行时必须提供参数输入,否则运行报错。

解决方法:

1.IntelliJ IDEA:选择 Edit Configurations...,在 configuration 选项卡中找到 Program arguments 输入一个值,例如:6066,点击 OK 按钮,再次运行就不会报错了。

2.Eclipse:对该类进行右击选择 Run as -> Run configurations,再选择“Arguments”部分,输入参数。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值