Closed xumingming closed 12 years ago
呃, 我想结果不一致的原因应该是, HouseMD
是通过Class.getResource(name).getFile()
, 请见Utils.scala的44
行.
Class.getResource(name)
是委派给它的ClassLoader.getResource(name)
, 这样会有你怀疑的问题, HSF
中自定义的ClassLoader
没有覆写getResource(name)
, 也就是说还是按照现在找父后找自己的逻辑, 这恐怕就是不一致问题的关键.
看来的通过CodeSource
来找, 不过这会有个小问题, 我那java.lang.String
做了个实验, 它的CodeSource
为null
, 这貌似意味着BootClassLoader
加载的类都将无法获知路径.
这个问题我修正一下, 优先从CodeSource
中找, 如果为null
的话, 通过getResource
来查.
我试了一下对了。
嗯, 这验收测试做的超级到位啊!!!
我这两天在诊断一个包冲突的问题,用housemd的loaded去查看,他显示
com.taobao.remoting.impl.ConnectionRequest
是从我们的war包里面的一个jar包里面加载出来的,但是当我实际调试进去的时候我用结果显示这个类是从
/usr/alibaba/jetty7.3.1/hsf.configuration/org.eclipse.osgi/bundles/26/1/.cp/network.core-1.2.7.4.jar
这个包里面加载出来的,不知道这个问题是不是跟hsf本身用了自己的什么类加载器有关。