作者sbrhsieh (偶尔想摆烂一下)
看板java
标题Re: [问题] ClassLoader
时间Fri Oct 15 19:41:21 2010
※ 引述《meconin (miss you ~)》之铭言:
: 我现在有两个 class 希望是用自己的 loader load 起来
: clsA, clsB,
: clsA{
: test(){
: System.out.println(
: clsA.class.getClassLoader().getClass().getName());
: }
: }
: clsB{
: static test(){
: clsA a = new clsA();
: System.out.println(new a.test());
: }
: }
: 我的 loader 暂时称呼为 ld
: 我在 main 里面写
: main{
: Class a = ld.load("clsA", false);
: Class b = ld.load("clsB", false);
: b.test();
: }
: 会发现 clsA 的 loader 是 sun.misc.Launcher$AppClassLoader
: 不知道有没有高手对这个机制比较了解,可以说明一下?
你的 class loader 最重要了,你反而没有给。
看起来你的 class loader 实做的 loadClass 是采一般的 delegation model,
而你在执行程式时所设定的 classpath 包含了 clsA 所在的路径,所以当程式
使用你设计的 class loader 企图载入 clsA 时,你的 class loader 会 delegate
给其 parent loader,而 parent loader(sun.misc.Launcher$AppClassLoader)
找的到 clsA 的 class file,於是就由 parent loader 载入 clsA。
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 114.24.83.190