You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java 8 JAR文件在命令提示符中执行时出现ArrayIndexOutOfBoundsException问题求助

问题分析与解决:JAR运行时ArrayIndexOutOfBoundsException异常

问题背景

我编写了一个简单的Java程序,从程序参数接收两个整数并打印它们的和。在IntelliJ IDEA中配置参数3和5后运行完全正常,输出a + b = 8,进程以退出码0结束。但打包成JAR(名为FirstProject_jar3)后,用命令-classpath FirstProject.jar org.firstjavaproject.tutorial.TwoSum在命令提示符执行时,收到错误:

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0 at org.firstjavaproject.tutorial.TwoSum.main(TwoSum.java:5)

相关代码(TwoSum.java):

package org.firstjavaproject.tutorial; 
public class TwoSum { 
    public static void main(String[] args) { 
        int a = Integer.parseInt(args[0]); 
        int b = Integer.parseInt(args[1]); 
        int sum = a + b; 
        System.out.println ("a + b = " + sum); 
    } 
}

问题原因&解决方案

这个错误的核心原因非常明确:IDE中配置的程序参数只在IDE内部运行时生效,命令行执行JAR时不会自动继承这些参数。

在IDE里设置3和5作为参数时,IDE启动程序会自动把这两个值传入main方法的args数组,所以args[0]和args[1]都有合法值;但你在命令行执行时,只输入了启动类的命令,没有传入任何参数,此时args数组是空的(长度为0),访问args[0]自然会触发数组越界异常。

正确的命令行执行方式

你需要在命令末尾手动添加两个整数参数,格式如下:

java -classpath FirstProject.jar org.firstjavaproject.tutorial.TwoSum 3 5

这里的3和5就是要传入程序的两个整数参数,执行后就能正常输出a + b = 8了。

优化建议:增加参数校验

为了避免后续再遇到类似问题,可以在代码里添加参数长度校验,当用户未传入足够参数时给出明确提示,让程序更健壮:

package org.firstjavaproject.tutorial; 
public class TwoSum { 
    public static void main(String[] args) { 
        // 先检查参数数量是否符合要求
        if (args.length != 2) {
            System.out.println("错误:请传入两个整数参数!");
            System.out.println("示例用法:java -classpath FirstProject.jar org.firstjavaproject.tutorial.TwoSum 3 5");
            System.exit(1); // 非0退出码表示异常结束
        }
        
        int a = Integer.parseInt(args[0]); 
        int b = Integer.parseInt(args[1]); 
        int sum = a + b; 
        System.out.println ("a + b = " + sum); 
    } 
}

内容的提问来源于stack exchange,提问作者wpc6707

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.30 13:57:27