黑马程序员技术交流社区

标题: 关于主函数的一点问题 [打印本页]

作者: 王桂丽    时间: 2012-9-26 17:12
标题: 关于主函数的一点问题
本帖最后由 王桂丽 于 2012-9-26 17:37 编辑

import java.lang.reflect.*;
import java.io.*;
class  ManiTest
{
//为什么编译不出错,运行出错
//Exception in thread "main" java.lang.NoClassDefFoundError: MainTest



public static void main(String[] args) throws Exception
{
  //ArgumentsTest.main(new String[]{"111","222","333"});
  //System.out.println("Hello World!");
  String name=args[0];
  Method mainmethod=Class.forName(name).getMethod("main",String[].class);
  mainmethod.invoke(null,new String[]{"111","222","333"});
}
}
class ArgumentsTest
{
public static void main(String[] args)
{
  for(String arg:args)
  System.out.println(arg);
}
}

作者: 冯伟    时间: 2012-9-26 17:18
运行时的类名写错了
ManiTest
MainTest
作者: 杜正华    时间: 2012-9-26 18:15
参数设置成ArgumentsTest,你调用的是ArgumentsTest类中的main函数,不过我把ManiTest
类中的arg[0]设置成ArgumentsTest,运行时提示找不到ArgumentsTest资源。。。



作者: 王贵朝    时间: 2012-9-26 18:21
class  ManiTest
{
//为什么编译不出错,运行出错
//Exception in thread "main" java.lang.NoClassDefFoundError: MainTest   [color=Red类名写错了,一般找 不到类定义时会抛出这个异常
作者: 曾浩    时间: 2012-9-26 18:58
如果你是用命令行运行的吗  如果是 建议 关闭命令行后重新运行下。
作者: 黄敏    时间: 2012-9-26 20:25

本帖最后由 王桂丽 于 2012-9-26 17:37 编辑


import java.lang.reflect.*;
import java.io.*;
class  ManiTest      //楼主哦  你细心点行吗,前面得加上public 修饰  ,应为public class ManiTest 要不然JVM找不到共有的ManiTest  类
{
//为什么编译不出错,运行出错
//Exception in thread "main" java.lang.NoClassDefFoundError: MainTest



public static void main(String[] args) throws Exception
{
  //ArgumentsTest.main(new String[]{"111","222","333"});
  //System.out.println("Hello World!");
  String name=args[0];
  Method mainmethod=Class.forName(name).getMethod("main",String[].class);
  mainmethod.invoke(null,new String[]{"111","222","333"});
}
}
class ArgumentsTest
{
public static void main(String[] args)
{
  for(String arg:args)
  System.out.println(arg);
}
}



作者: 明光照    时间: 2012-9-26 20:40
主类要定义为public




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