在eclipse中更正try-catch输出但不在cmd中

时间:2014-12-03 17:22:51

标签: java eclipse error-handling cmd

我为自己开了一个疯子。 我正在尝试在调用我编写的Java程序时从命令行中获取参数的数量,在Eclipse中我获得了正确的输出但是在win cmd中我得到了ArrayIndexOutOfBoundException。 然后,我再次使用try-catch,它在eclipse中工作,但在win cmd中没有...我错过了什么?

如果我插入所有参数,它从两端完美地工作,那就是当我想得到它不起作用的缺失参数时。

在我使用的代码的简化版本下面:

public static PrintWriter outWrite;
public static String[] allInput;

    public static void main(String [] args) {

           // I first tried this

                if(args.length==0){
                    System.out.println("Missing arguments. Please try again");
                    System.exit(0);
                }
                if (args.length==1){
                    System.out.println("Missing second argument. Please try again");
                    System.exit(0);
                }


           // and then the try-catch, I leave both of them here so you can see them 

            try{
                myMethod(args[0]);
                String input2 = args[1];
            // here I'm just saving the output of myMethod to the input2
                try {
                    outWrite = new PrintWriter(input2, "UTF-8");
                } catch (FileNotFoundException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                } catch (UnsupportedEncodingException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }

            } catch (ArrayIndexOutOfBoundsException e){
                System.out.println("Missing arguments. Please try again");
                System.exit(0);
            }
       }

我也看了Eclipse gives different output than cmd using runtime exec但没有成功

---编辑添加命令行并使用精确错误:---- win中使用的命令行是java Driver,它应该给我在代码中写的消息 相反,它给了我以下内容:

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 1
        at myPackage.Driver.main(Driver.java:31)
错误中的

line 31对应于上述代码段中main()方法内的第一行。

在日食中(Driver.java:31)有另一个数字正确指向myMethod(args[0])

正确的命令行是java myPackage.Driver fileIn.txt fileOut.txt,它可以从win cmd和eclipse中完美地运行

任何帮助都会很棒! 谢谢:))

1 个答案:

答案 0 :(得分:0)

好吧,经过两天的尝试和头痛,我找到了解决方案:

错误是因为Eclipse需要在win或Mac中使用javac编译.java文件。

我无法在胜利中使用javac,因为它给了我javac is not recognized error(我刚刚更改了PC),在查看帖子javac is not recognized as an internal or external command, operable program or batch file后,我能够编译它使用: javac *.java文件夹中的src

从那里我终于能够通过正确的错误处理消息从双方(cmd和eclipse)获得正确的输出

我承认我并不完全确定为什么我从cmd获得正确的输出,只要我使用了两个参数,但上面的解决方案对我有效。