黑马程序员技术交流社区

标题: 这个错误我想了很久了,不知道怎么回事! [打印本页]

作者: 邓海涛    时间: 2012-4-7 20:58
标题: 这个错误我想了很久了,不知道怎么回事!
package cn.dan.day2;

import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;

public class TestMain {

        /**
         * @param args
         * @throws ClassNotFoundException
         * @throws NoSuchMethodException
         * @throws SecurityException
         * @throws InvocationTargetException
         * @throws IllegalAccessException
         * @throws IllegalArgumentException
         */
        public static void main(String[] args) throws SecurityException, NoSuchMethodException, ClassNotFoundException, IllegalArgumentException, IllegalAccessException, InvocationTargetException {
                // TODO Auto-generated method stub
       
                String startClassName = args[0] ;
                Method mainMethod = Class.forName(startClassName).getMethod("main", String[].class) ;
                mainMethod.invoke(null, new Object[]{new String[]{"aaa","bbb","ccc"}}) ;
        }
}

class TestArguments{
        public static void main(String[] args){
                for(String arg : args){
                        System.out.println(arg);
                }
        }
}


问题:这个代码为什么会报:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0
        at cn.dan.day2.TestMain.main(TestMain.java:20)
        的错误?要怎么样解决?

作者: 宋蕈    时间: 2012-4-7 21:07
本帖最后由 宋蕈 于 2012-4-7 21:09 编辑

你是不是那个执行的时候 没有给出 参数才会报错啊。
  你要在执行的时候 准确的给出 下面那个TestArguments 类的 完整路径才行。
    你报错的地方就是没检查到 agrs[0] 这个地方。 显然是无参的情况
作者: 邓海涛    时间: 2012-4-7 21:10
你说的是在命令提示符里面的吧?恩,确实是那个问题,我在命令提示符里面输入:java TestMain cn.dan.day2.TestArguments 之后就得到效果了,真的太感谢了啊,帮我解决了今天想了一天的这个问题!
作者: 郑苑东    时间: 2012-4-7 21:11
本帖最后由 郑苑东 于 2012-4-7 21:16 编辑

数组下标索引越界啊。。你运行时。。。可以在 类后面加上 空格。。然后加上参数。。如果多个参数可以用空格隔开。。。。
作者: 邓海涛    时间: 2012-4-7 21:18
恩,谢谢,已经解决了,是因为我没有传参数导致的!
还有个问题就是在命令提示符里面运行我解决了,但是我在myeclipse里面还是不知道怎么才能运行,myeclipse里面不是不支持
运行的时候传参数的吗?我要怎么样才可以在myeclipse里面运行呢?

作者: 欧阳才志    时间: 2012-4-7 21:19
ArrayIndexOutOfBoundsException: 0
这个是脚标越界!你开始定义的时候是 String startClassName = args[0]没有初始化导致的
作者: 邓海涛    时间: 2012-4-7 21:28
恩,是啊,这个是反射机制了,我明白在命令提示符里面直接输入参数就行了,那在myeclipse里面运行不能在运行的时候输入参数啊?
我现在想求解的就是在myeclipse里面怎么加入运行时的那个参数?谢谢
作者: pray    时间: 2014-4-26 04:36
努力,努力,再努力!!!!!!!!!!!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2