public class Test
{
    public static void main(String []args)
    {
       Another a=new Another();//这里假设Test是由BootstrapLoader载入,而BootstrapLoader无法载入Another(不在其搜索路径),据说这个可以用
                                   //ContextClassLoader解决,请高手帮忙看一下,该如何利用ContextClassLoader进行解决?非常感谢!
    }
}

解决方案 »

  1.   

    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主【Fenglee2008】截止到2008-07-05 18:40:56的历史汇总数据(不包括此帖):
    发帖的总数量:26                       发帖的总分数:662                      
    结贴的总数量:26                       结贴的总分数:662                      
    无满意结贴数:4                        无满意结贴分:34                       
    未结的帖子数:0                        未结的总分数:0                        
    结贴的百分比:100.00%               结分的百分比:100.00%                  
    无满意结贴率:15.38 %               无满意结分率:5.14  %                  
    敬礼!
      

  2.   

    如果 Another 不在你classpatch下 Another a=new Another() 这样写会有编译错误啊每个线程都有 contextClassLoader    Thread.currentThread().getContextClassLoader();你可以自己写一个ClassLoader来自定义你的加载方法,然后这是到线程中。或者用Class.forName(name, initialize, loader),把你自己的ClassLoader放入其中不知道你的提问是想研究下类加载机制还是真的出现了此类问题。
    难道要加载的类的位置是动态的,或者不在本地,
    如果类不在本地,在网络上可以设置codebase ,例如设置codebase为 http://www.abc.com/abcContextClassLoader这个类可能有别的同名类 JBOSS就有一个同名的类加载器
      

  3.   

    首先感谢LS的兄弟!我再把我的问题描述详细点,由于BootstrapClassLoader只加载java标准包,rt.jar等四个包,现在假设我写的这个Test.class是个标准库类,当它利用Class.forName("某个应用包中的类")加载这个应用类时,它一定会用BootStrapClassLoader进行加载,此时是无法加载成功的,而我们只有通过ContextClassLoader进行相关操作,才能保证此应用类可成功加载,我的问题是:怎样通过这个ContextClassLoader进行相关操作,才能成功加载我们应用的类?谢谢!
      

  4.   

    楼主要知道创建一个对象不是一定要用new的,还有反射等等.
      

  5.   

    基本了解楼主的意思,觉得跟jdbc实现方式差不多,看jdbc是怎么实现的,自己去读源代码吧o(∩_∩)o...,jdbc貌似没有用ContextClassLoader
      

  6.   

    “坏孩子”很强大!据说jdbc是用ContextClassLoader解决此问题的,看来我不得不去读源码了!~~~
      

  7.   

    BootstrapLoader无法载入Another那就放到/lib 目录下面,或者干脆手工加到
    setclasspath.bat里面算了。呵呵