程序代码如下:
package Chapter8;
import java.lang.reflect.*;
public class GetFieldsDemo
{
public static void main(String[] args)
{
Class c=null;
try
{
c=Class.forName("Employee2");
}
catch(ClassNotFoundException e)
{
e.printStackTrace();
}
Field fields[]=c.getDeclaredFields();
for(int i=0;i<fields.length;i++)
{
String type=fields[i].getType().toString();
String str=fields[i].getName();
System.out.println("Field type is: "+type+"\nField name is:"+str+"\n");
}
}
}
class Employee2
{
private String name;
private int age;
private String sex;
public Employee2(){}
public Employee2(String name,int age,String sex)
{
this.name=name;
this.age=age;
this.sex=sex;
}
public String get_name()
{return name;}
public int get_age()
{return age;}
public String get_sex()
{return sex;}
public void set_name(String name)
{this.name=name;}
public void set_age(int age)
{this.age=age;}
public void set_sex(String sex)
{this.sex=sex;}
}
出现的错误:
1.java.lang.ClassNotFoundException: Employee2
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 Chapter8.GetFieldsDemo.main(GetFieldsDemo.java:10)
Exception in thread "main" java.lang.NullPointerException
at Chapter8.GetFieldsDemo.main(GetFieldsDemo.java:16)
2.The source attachment does not contain the source for the file AccessController.class.
3.The source attachment does not contain the source for the file Class.class.
这段程序在命令行中调试一切正常,但是在Eclipse中调试就出现了上述错误,我调试了很长时间还是没有解决,我想向大家请教一下这是什么原因?
非常感谢!
------解决方案--------------------
需要用类的全名 (加上包名)
Class.forName("Chapter8.Employee2");