通过读取properties文件创建对象,Class.forName()报错,显示找不到类

问题描述

在通过配置文件创建对象时,Class.forName()报类找不到异常,但直接将字符串传入又可以创建。

  .properties文件

相关代码如下:

 try(InputStream resourceAsStream = CarFactory.class.getClassLoader().getResourceAsStream("CarName.properties")) {
            Properties properties = new Properties();
            properties.load(resourceAsStream);
            //从properties中获取全类名
            Set<Object> keys = properties.keySet();
            for(Object key:keys){
                //获取全类名
                String o = (String)properties.get(key);
                //通过反射创建对象
                Class<?> aClass = Class.forName(o);
                Constructor<?> declaredConstructor = aClass.getDeclaredConstructor(null);
                Object car = declaredConstructor.newInstance(null);
                //存入容器
                hashMap.put((String)key,car);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }


 

原因分析:

查了相关资料才发现,.properies文件中时键值对类型,而且键和值都是Striing类型,都不需要加"",否则会将""当成字符串中的一部分


解决方案:

将.properies文件中的""去掉,就不会报错了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值