A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

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)
        的错误?要怎么样解决?

7 个回复

正序浏览
pray 高级黑马 2014-4-26 04:36:03
8#
努力,努力,再努力!!!!!!!!!!!
回复 使用道具 举报
恩,是啊,这个是反射机制了,我明白在命令提示符里面直接输入参数就行了,那在myeclipse里面运行不能在运行的时候输入参数啊?
我现在想求解的就是在myeclipse里面怎么加入运行时的那个参数?谢谢
回复 使用道具 举报
ArrayIndexOutOfBoundsException: 0
这个是脚标越界!你开始定义的时候是 String startClassName = args[0]没有初始化导致的
回复 使用道具 举报
恩,谢谢,已经解决了,是因为我没有传参数导致的!
还有个问题就是在命令提示符里面运行我解决了,但是我在myeclipse里面还是不知道怎么才能运行,myeclipse里面不是不支持
运行的时候传参数的吗?我要怎么样才可以在myeclipse里面运行呢?
回复 使用道具 举报
本帖最后由 郑苑东 于 2012-4-7 21:16 编辑

数组下标索引越界啊。。你运行时。。。可以在 类后面加上 空格。。然后加上参数。。如果多个参数可以用空格隔开。。。。
回复 使用道具 举报
你说的是在命令提示符里面的吧?恩,确实是那个问题,我在命令提示符里面输入:java TestMain cn.dan.day2.TestArguments 之后就得到效果了,真的太感谢了啊,帮我解决了今天想了一天的这个问题!
回复 使用道具 举报
本帖最后由 宋蕈 于 2012-4-7 21:09 编辑

你是不是那个执行的时候 没有给出 参数才会报错啊。
  你要在执行的时候 准确的给出 下面那个TestArguments 类的 完整路径才行。
    你报错的地方就是没检查到 agrs[0] 这个地方。 显然是无参的情况
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马