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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 吴亨 黑马帝   /  2012-2-8 17:45  /  1728 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 吴亨 于 2012-2-9 19:49 编辑
  1. package com.baidu.exam;

  2. import java.lang.reflect.Method;

  3. class Point {
  4.         public static void main(String[]args)throws Exception
  5.         {
  6.             String name = args[0];
  7.       Method mainMethod = Class.forName(name).getMethod("main", String[].class);
  8.           mainMethod.invoke(null, (Object)new String[]{"eAWDR","rgsfe","gs"});
  9.         }
  10.        
  11.   
  12. }
  13. class Hello
  14. {
  15.     public static void main(String[]args) {
  16.             for(String str:args){
  17.                     System.out.println(str);
  18.             }
  19.        
  20.         }
  21. }
复制代码
在dos里面我用 "java  Point  com.baidu.exam.Hello"命令,老是执行出错,求指教。

3 个回复

倒序浏览
本帖最后由 最初的理想 于 2012-2-8 18:47 编辑

你能把错误提示写上么??由于你的源程序有包名 因此运行的时候该加上包名:
java com.baidu.exam.Point com.baidu.exam.Hello
运行程序没问题
附:文件目录D:\myeclipsejava2\test\src\com\baidu\exam


D:\myeclipsejava2\test\bin>java Point com.baidu.exam.Hello
Exception in thread "main" java.lang.NoClassDefFoundError: Point
Caused by: java.lang.ClassNotFoundException: Point
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClassInternal(Unknown Source)
Could not find the main class: Point.  Program will exit.

D:\myeclipsejava2\test\bin>java com.baidu.exam.Point com.baidu.exam.Hello
eAWDR
rgsfe
gs

评分

参与人数 1技术分 +1 收起 理由
唐秀启 + 1 赞一个!

查看全部评分

回复 使用道具 举报
楼主 你的代码是打包的
在DOS下编译后会在源文件.java相同的路径下生成对应的.class文件
但是这个.class字节码文件的包路径应该是源文件下新建相应包名文件夹,并把生成的.class文件放到文件夹里
像楼主的代码,应该在源文件下编译完源文件后新建
com
      |--baidu
            |--exam
把生成的Point.class和Hello.class文件放在exam里  
然后在DOS源码路径下执行  java com.baidu.exam.Point com.baidu.exam.Hello 就可以运行了
另一种方法可以在执行时不加包名,楼主需要将刚才的.class文件路径加到系统环境变量中

评分

参与人数 1技术分 +1 收起 理由
唐秀启 + 1 OK,已经加上,欢迎踊跃参加论坛交流.

查看全部评分

回复 使用道具 举报
谢谢大家
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马