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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 周兴华 中级黑马   /  2012-9-9 16:48  /  1845 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 周兴华 于 2012-9-9 16:50 编辑

这是张老师关于类加载器的视频中的代码
public class ClassLoaderTest {
public static void main(String[] args) {
  System.out.println(ClassLoaderTest.class.getClassLoader().getClass().getName());
  System.out.println(System.class.getClassLoader()); //System是有BootStrap加载器加载的
  ClassLoader load = ClassLoaderTest.class.getClassLoader();
  while(load != null){
   System.out.println(load.getClass().getName());
   load = load.getParent();
  }
  System.out.println(load);
}
}

我把这个类打成jar包放在我的JDK的JRE的lib里的ext目录下,即C:\Program Files\Java\jdk1.7.0_04\jre\lib\ext\itheima.jar
可是运行上面代码的结果是:
sun.misc.Launcher$AppClassLoader  //这说明ClassLoaderTest的类加载器还是AppClassLoader
null
sun.misc.Launcher$AppClassLoader
sun.misc.Launcher$ExtClassLoader
null

然后我去目录下找并没有发现itheima.jar这个包,如图

然后我再把这个类打包,发现

这里把我搞郁闷了,我自己去c盘找没找到itheima.jar,用eclipse导出jar包时eclipse又告诉我有这个jar包。这到底是怎么回事呢?
另外我还确认过了我的运行环境也是JDK1.7的没错。

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1 赞一个!

查看全部评分

2 个回复

倒序浏览
张老师的用的是jdk1.6的
回复 使用道具 举报
陈俊来 发表于 2012-9-9 17:24
张老师的用的是jdk1.6的

这跟jdk的版本应该没关系吧,只是如果你运行版本是jdk1.6的话,你导出的jar包就要放在jdk1.6的目录下;如果你的运行版本是jdk1.7的话,就把导出的jar包放在jdk1.7的目录下。我现在的问题是我直接去jdk1.7的目录下找不到我导出的jar包,而eclipse又告诉我已经有了这个jar包,这很矛盾!!而且程序的运行结果也不是像老师视频那样的,正常的结果应该是这个类是由ExtClassLoarder这个加载器加载的,而不是App加载器。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马