Enter class name (e.g. java.util.Date): 
ReflectionTest用java.util.Date可以运行,用ReflectionTest就不行,大家帮忙看下,java.lang.ClassNotFoundException: ReflectionTest
at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:268)
at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:164)
at study.ReflectionTest.main(ReflectionTest.java:24)
package study;import java.util.*;
import java.lang.reflect.*;public class ReflectionTest
{  
   public static void main(String[] args)
   {  
      // read class name from command line args or user input
      String name;
      if (args.length > 0) 
         name = args[0];
      else 
      {
         Scanner in = new Scanner(System.in);
         System.out.println("Enter class name (e.g. java.util.Date): ");
         name = in.next();
      }      try
      {  
         // print class name and superclass name (if != Object)
         Class cl = Class.forName(name);
         Class supercl = cl.getSuperclass();
         System.out.print("class " + name);
         if (supercl != null && supercl != Object.class)
            System.out.print(" extends " + supercl.getName());         System.out.print("\n{\n");
         printConstructors(cl);
         System.out.println();
         printMethods(cl);
         System.out.println();
         printFields(cl);
         System.out.println("}");
      }
      catch(ClassNotFoundException e) { e.printStackTrace(); }
      System.exit(0);
   }   public static void printConstructors(Class cl)
   {  
      Constructor[] constructors = cl.getDeclaredConstructors();      for (Constructor c : constructors)
      {           
         String name = c.getName();
         System.out.print("   " + Modifier.toString(c.getModifiers()));
         System.out.print(" " + name + "(");         // print parameter types
         Class[] paramTypes = c.getParameterTypes();
         for (int j = 0; j < paramTypes.length; j++)
         {  
            if (j > 0) System.out.print(", ");
            System.out.print(paramTypes[j].getName());
         }
         System.out.println(");");
      }
   }
   public static void printMethods(Class cl)
   {  
      Method[] methods = cl.getDeclaredMethods();      for (Method m : methods)
      {  
         Class retType = m.getReturnType();
         String name = m.getName();         // print modifiers, return type and method name
         System.out.print("   " + Modifier.toString(m.getModifiers()));
         System.out.print(" " + retType.getName() + " " + name + "(");         // print parameter types
         Class[] paramTypes = m.getParameterTypes();
         for (int j = 0; j < paramTypes.length; j++)
         {  
            if (j > 0) System.out.print(", ");
            System.out.print(paramTypes[j].getName());
         }
         System.out.println(");");
      }
   }
   public static void printFields(Class cl)
   {  
      Field[] fields = cl.getDeclaredFields();      for (Field f : fields)
      {  
         Class type = f.getType();
         String name = f.getName();
         System.out.print("   " + Modifier.toString(f.getModifiers()));
         System.out.println(" " + type.getName() + " " + name + ";");
      }
   }
}

解决方案 »

  1.   

    你确定ReflectionTest在classpath上吗?
      

  2.   

    cmd
    echo %classpath%执行结果贴上来看看。
      

  3.   

    输入的classname应该是完整名,包括包结构:study.ReflectionTest
      

  4.   

    .;D:\Program Files\Java\jdk1.5.0\lib\dt.jar;D:\Program Files\Java\jdk1.5.0\lib\
    ools.jar
    输入的classname应该是完整名,包括包结构:study.ReflectionTest.
    这样也不行,我试过了.刚开始程序没问题时不用加study.都可以出结果的.