在验证Reflect的时候写个测试程序老抛java.lang.ClassNotFoundException
Father.java:
public class Father{
String name = "father";
int age = 40;
public Father (){};
public void fatherMothed(){
}
private void fatherMethod2 (){
}
}
class Son extends Father{
String name = "son";
int age = 20;
public Son(){};
public void sonMethod(){
}
}下面是TestReflect.javaimport java.lang.reflect.*;
import java.util.Scanner;public class TestReflect {
public static void main(String []args) {
Scanner sca = new Scanner(System.in);
String className = sca.next();
System.out.println(className); try {
Class cl= Class.forName(className);
Field field = cl.getDeclaredField(className);
Constructor[] con = cl.getDeclaredConstructors();
Method[] method = cl.getDeclaredMethods();
System.out.println(field.toString());
for (Constructor cn :con){
System.out.println("Construtor" + cn.toString());
}
for (Method md: method){
System.out.println("method" + md.toString());
}
} catch (SecurityException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (NoSuchFieldException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
老是抛java.lang.ClassNotFoundException异常...希望高手能够指点一下多谢了..
Father.java:
public class Father{
String name = "father";
int age = 40;
public Father (){};
public void fatherMothed(){
}
private void fatherMethod2 (){
}
}
class Son extends Father{
String name = "son";
int age = 20;
public Son(){};
public void sonMethod(){
}
}下面是TestReflect.javaimport java.lang.reflect.*;
import java.util.Scanner;public class TestReflect {
public static void main(String []args) {
Scanner sca = new Scanner(System.in);
String className = sca.next();
System.out.println(className); try {
Class cl= Class.forName(className);
Field field = cl.getDeclaredField(className);
Constructor[] con = cl.getDeclaredConstructors();
Method[] method = cl.getDeclaredMethods();
System.out.println(field.toString());
for (Constructor cn :con){
System.out.println("Construtor" + cn.toString());
}
for (Method md: method){
System.out.println("method" + md.toString());
}
} catch (SecurityException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (NoSuchFieldException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
老是抛java.lang.ClassNotFoundException异常...希望高手能够指点一下多谢了..
Class cl= Class.forName(className);
Field field = cl.getDeclaredField(className);
className到底是类名还是field名,大小写对吗?
Class cl = Class.forName("Son");
Field field = cl.getDeclaredField("name");
没问题
这个异常就是找不到类。而出现这个问题的原因就是路径不对。
Class cl= Class.forName(className);
这里ClassName是在classPath中吗?
但要是这么写就行..
Father fa = new Father();
Class cl = fa.getClass();
Field fi = cl.getDeclaredField("name");
Field field = cl.getDeclaredField("name");
试试
这个句子有问题改成这句就没问题Field[] field = cl.getDeclaredFields() ;
Field field = cl.getDeclaredField(className);
你的className是类名不是字段名