我最近在看类加载器的相关的内容
我自己按照张孝祥老师的视屏一步一步做了一个类加载器
并在他的基础上做了一个设想,但是设想出现了失败,所以我想请教一下对java有深入研究的
大神给予小弟一个点拨。我的环境是MyEclipse,用的jdk是我自己下载的JDK1.7设置的classpath是: .;C:\Users\ZJH\Desktop;%JAVA_HOME%\lib; 遇到问题的代码是下面的这个代码 Class clazz = new MyClassLoader("itcastlib").loadClass("cn.itcast.day2.ClassLoaderAttach");按照常理来说,当运行到这一句的时候,对于cn.itcast.day2.ClassLoaderAttach这个类的加载是先抛给
apploader  然后 Apploader抛给Extloader 然后Extloader是抛给BootStrap来加载,接着就是Bootstrap加载失败,交由Extloader加载,Extloader加载失败,交给Apploader加载,注意了,就是这一步,我不能够理解,
我已经在桌面上建立了一个文件夹,名字是cn,cn文件夹下面是文件夹itcast,itcast文件夹下面是day2文件夹,day2文件夹下面放的是ClassLoaderAttach.class文件。
我们知道AppLoader加载类时是按照classpath来加载的,我们可以看到,我设置的classpath中有C:\Users\ZJH\Desktop这个路径,那么这个AppLoader应该能够找到这个ClassLoaderAttach.class文件的呀,
可是事实表明,AppLoader没有加载到这个class文件,而是由我的自定义的MyClassLoader类加载器加载了我放在另一个地方的一个ClassLoaderAttach.class文件,请问这是为什么?赏分40~  坐等回复。谢谢谢谢
JavaClassLoader

解决方案 »

  1.   

    带上包名了呀  cn.itcast.day2就是包名
      

  2.   

    MyClassLoader 怎么写的,是不是打破了父代理?
      

  3.   


    1 - .;C:\Users\ZJH\Desktop;%JAVA_HOME%\lib; 是在IDE中设置的?2 - 你要加载的 ClassLoaderAttach 类是同一个 project 里面的?3 - 你在 classpath 中把 "." 放在了桌面路径前面,那就是说,如果在 . 作为 class path 时找到了名称符合的类,那桌面也就不用看了4 - 我建议你在运行的时候不要用IDE,用console运行试试
      

  4.   

    用console运行试试 猜测应该是myeclipse执行路径问题
      

  5.   

    JVM在哪个路径下启动,那么,它的class path就是哪个路径。
    如果给定的文件路径不是绝对路径,那么它就会在当前启动jvm的路径下去找指定的文件