ClassLoader加载指定的类需注意六个细节或报ClassNotFundEception异常总结

项目中,加载指定的类反射调用方法一直报类找不到,经过数百次的测试,对这种问题有了一个重新的认识,特总结、记录、分享如下:

1、路径中尽可能用"/"或者File.separator()而非“\\”,路径中“\”是windows平台的,linux平台中是“/”,java中也是用“/”作为路径的,所以为了跨平台和更规范,建议采用前者

2、在当前的环境中获取绝对路径后,尽可能的replace(“\\”,"/")一下,windows平台开发中这个很需要的

3、new File中字符串路径如果是文件夹后边可以不带“/”,但如果你直接是new URL("路径")来指定加载类的路径的话,后边必须追加“/”否则会以文件处理找不到的

4、由file转成URL时,建议别采用File.toURL()此方法已经被JDK1.6及以后版本淘汰了,属于过时API,应该采用file.toURI().toURL()方法

5、路径中非法字符会这转成URI的过程中变成"%20",不过不会影响程序的运行,路径中如有汉字也是可以的,不要过于担心这一点,不过调试一下小心乱码。建议路径还是非汉字正常字符组成的比较好。

6、最最重要的一点,就是加载的类如果有包名,如com.***.text;,一定要把类的路径写成com文件的上一层,而load("类名")时,一定要写上包名如com.***.text.Formatter,网上很多简单的测试类都没注意到这一点,如果你路径中非要写上包名而且测试还通过了,恭喜你,你碰巧了,因为如果路径不对类加载器load不到的话会去当前类的路径下边去找,你肯定把这个被加载的测试类和加载的写在一个包下了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值