未知的原因:java.lang.ArrayIndexOutOfBoundsException:从命令行

时间:2019-10-21 03:01:38

标签: java

由于某种原因,我遇到此错误,并且我现在非常困惑。 我该如何解决这个问题?

public static void main(String[] args) throws FileNotFoundException {
    Memory myMemory = new Memory();
    File file = new File(args[0]);
    myMemory.fileParser(file);
}

这是我的错误:

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index 0 out of bounds for length 0
        at Memory.main(Memory.java:262)

2 个答案:

答案 0 :(得分:1)

很明显,您在运行程序时未提供任何命令行参数。结果,args arraay的长度为零。您的代码并非旨在解决该问题,而是尝试使用从数组末尾开始的位置获取的参数。

解决方案分为两部分:

  1. 您需要提供参数。例如,如果您从命令行运行程序:

      $ java name.of.your.mainclass filename
    
  2. 您需要修改程序,以便它检测到它已被调用而没有参数,并显示错误消息。例如:

    public static void main(String[] args) throws FileNotFoundException {
        if (args.length != 1) {
            System.err.println("Filename argument missing.")
            System.err.println("Usage: <command> <filename>");
            System.exit(1);
        }
    
        Memory myMemory = new Memory();
        File file = new File(args[0]);
        myMemory.fileParser(file);
    }
    

答案 1 :(得分:0)

您在运行程序时是否已将任何参数传递给main方法?

您必须在 140 | }; 141 | > 142 | @connect(mapStateToProps, mapDispatchToProps) | ^ 143 | 144 | class Header extends Component { 145 | constructor(props) { 中将字符串显式传递给args,否则main(String[] args)将引发异常

如何在Eclipse中传递arg: Invoking Java main method with parameters from Eclipse