当前位置: 代码迷 >> Eclipse >> 在反射中调试一个关于“获得类的成员方法”的程序时遇到的有关问题
  详细解决方案

在反射中调试一个关于“获得类的成员方法”的程序时遇到的有关问题

热度:80   发布时间:2016-04-23 14:15:12.0
在反射中调试一个关于“获得类的成员方法”的程序时遇到的问题
程序代码如下:
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");
  相关解决方案