A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© yangjie 中级黑马   /  2013-9-28 19:32  /  1431 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 yangjie 于 2013-9-28 20:06 编辑

自己打高新技术56里的代码的时候,出了个错怎么也搞不懂。
放上来请大家看看,求解释

=================================================================
已解决。xxx.advice = Adivce←单词打错了。之前还特地检查过好几遍拼写都没发现,OTZ

  1. <P>
  2. import java.io.*;
  3. import java.util.*;
  4. import java.lang.reflect.*;

  5. public class Test
  6. {
  7.      public static void main(String[] args) throws Exception
  8.     {
  9.           //读取配置文件内容
  10.           String name = "xxx";
  11.           Properties prop = new Properties();;
  12.           prop.load(new FileInputStream("properties"));
  13.           //通过读取到的字符串建立对象
  14.           Object target = Class.forName(prop.getProperty(name + ".target")).newInstance();
  15.           Advice advice = (Advice)Class.forName("Advice").newInstance();//这句运行成功
  16.           //Advice advice = (Advice)Class.forName(prop.getProperty(name + ".advice")).newInstance();//这句运行就是ClassNotFoundException
  17.           System.out.println(prop.getProperty(name + ".advice"));//把读到的值打出来看看,是Advice没错
  18.           System.out.println("---"+target.getClass().getName());
  19.           System.out.println("---"+advice.getClass().getName());
  20.      }
  21. }
复制代码
properties中的内容
     #xxx = java.util.ArrayList
     xxx = ProxyBeanFactory
     xxx.target = java.util.TreeSet
     xxx.advice = Adivce

评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

1 个回复

倒序浏览
首先56的代码肯定不是这样打的。
Object target = Class.forName(prop.getProperty(name + ".target")).newInstance();
Advice advice = (Advice)Class.forName("Advice").newInstance();
这两个都是配置文件里的,应该都应该放进BeanFactory类里。

而你的错误是配置的properties中没有键值对,键为Advice的类,取出来的肯定是空
这样prop.getProperty()找的时候肯定会跳出异常。

你应该把xxx.advice = Adivce 的 Advice类改为全类名
然后把dvice advice = (Advice)Class.forName("Advice").newInstance()改为
dvice advice = (Advice)Class.forName(prop.getProperty(name + ".advice")).newInstance()这样取出的才是Advice类

评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马