package reflection;public class TestReflection { public static void main(String[] args) {
String str = "T";

try {
Class c = Class.forName(str);
c.newInstance();
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
} }}class T{

static{
System.out.println("T loaded!");
}

public T(){
System.out.println("T has been constructed!");
}

int i;
String s;

public void m1(int i){
this.i = i;
}

public String getS(){
return s;
}

}总是报错:
java.lang.ClassNotFoundException: T
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)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Unknown Source)
at reflection.TestReflection.main(TestReflection.java:9)
请问为什么?

解决方案 »

  1.   

    classpath设置问题
    你用javac reflection.TestReflection.java看看行不行?
      

  2.   

    你的类是不是没有放进包里面?如果是没有放进包里呢建议把类放进包了。反射机制中裸体类是不行的。要把类放进包里。String str = "包的全名.T";
    这样应该就行了。
    有参考资料看看吧:http://lshy168.qupan.com这里有Java放射机制的视频下载,你可以下载看看。
      

  3.   

    D:\MyEclipse\workspace\BasicTest\src\reflection>javac TestReflection.javaD:\MyEclipse\workspace\BasicTest\src\reflection>java TestReflection
    Exception in thread "main" java.lang.UnsupportedClassVersionError: TestReflectio
    n (Unsupported major.minor version 49.0)
            at java.lang.ClassLoader.defineClass0(Native Method)
            at java.lang.ClassLoader.defineClass(Unknown Source)
            at java.security.SecureClassLoader.defineClass(Unknown Source)
            at java.net.URLClassLoader.defineClass(Unknown Source)
            at java.net.URLClassLoader.access$100(Unknown Source)
            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)
      

  4.   

    是java reflection.TestReflection
    不是上面那个
      

  5.   

    忘了看上面,你已经放进去了。改成这样应该就行了:String str = "reflection.T";
    试试不行再说。
      

  6.   

    D:\MyEclipse\workspace\BasicTest\src\reflection>java reflection.TestReflection
    Exception in thread "main" java.lang.NoClassDefFoundError: reflection/TestReflec
    tion