码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2015-06-09 09:56:26      阅读:122      评论:0      收藏:0      [点我收藏+]

标签:urlclassloader   java加载指定类   加载指定类load报异常   动态加载指定类   classnotfund   

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

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不到的话会去当前类的路径下边去找,你肯定把这个被加载的测试类和加载的写在一个包下了。

 

 

 

 

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

标签:urlclassloader   java加载指定类   加载指定类load报异常   动态加载指定类   classnotfund   

原文地址:http://blog.csdn.net/chenleixing/article/details/46422115

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!