原因:虽然同一个包中的类可以直接引用。但类名前的包名已默认由编译器加上去了。通过Class.forName(className)方式加载类的时候,如果不加包名则默认在 default 包中去找,所以找不到。因此用Class.forName(className)方式加载类的时候应加上包名。
JAVA反射练习时:
Exception in thread "main" java.lang.ClassNotFoundException: FansheTest.Service1
File SpringConfigFile=new File("/Users/zhang/Desktop/spring.txt");
Properties SpringConfig=new Properties();
SpringConfig.load(new FileInputStream(SpringConfigFile));
String ClassName=(String) SpringConfig.get("class");
System.out.println("ClassName===="+ClassName);
String MethodName=(String) SpringConfig.get("method");
System.out.println("MethodName===="+MethodName);
//根据类名创建对象
Class clazzz=Class.forName(ClassName);
spring.txt文件:
项目结构:
加载类时:会抛出ClassNotFoundException 异常,本来以为Service1类和当前FansheTest类在同一个包下 可以直接调用,结果运行抛出异常。
解决方法:
Spring.txt中加上包名字.