关于Java中的类加载器

laojiadingxi 发布于 2013/11/25 11:06
阅读 199
收藏 0
话说,Java加载类的时侯,先使用系统类加载器,如果系统类加载器找不到类的话,就用扩展类加载器,如果扩展类加载器找不到类的话,就用启动类加载器,我把自己写的类打包成jar包,放到了jdk安装路径,jre\lib\ext目录下,编译时能通过,但是运行的时候,说找不到那个类,why?

以下是问题补充:

@laojiadingxi:我用的jdk的版本是1.7的,是不是跟jdk版本有关? (2013/11/25 11:12)
@nile:为甚么要放在ext目录里面呢? (2013/11/28 20:52)
加载中
0
红薯
红薯

自己的 jar 包要用 -cp 来指定类路径,或者用 -Djava.ext.dirs=xxx 指定 jar 包所在的路径。

laojiadingxi
laojiadingxi
回复 @红薯 : 红薯大哥,我把jar包放错了,jdk安装路径下有两个目录,一个是jdk1.7.0_21,一个是jre7,而在jdk1.7.0_21目录下有个jre目录,不应该放在这个目录下的ext目录里面,而是要放在jre7那个目录下的lib/ext目录下面
laojiadingxi
laojiadingxi
回复 @红薯 : 原来如此,多谢红薯大哥!
红薯
红薯
回复 @laojiadingxi : 这是系统目录,为了安全考虑,只加载 jdk 自己的扩展包
laojiadingxi
laojiadingxi
还是有点不明白,不是说,扩展类加载器自动加载jre/lib/ext目录下的jar包么,我把jar包放在这个目录下,按常理来说,他会加载啊!
0
公孙二狗
公孙二狗
这个需要看你自己的类是怎么创建对象的。
返回顶部
顶部