在我的脑海里面有好几个话题需要记录一下,而正因为好多,我现在已经把这些话题记录在我的本子上。
看来是我最近工作比较紧张,没有时间blog了。呵呵,今天先记录一下这个话题:
Eclipse插件开发中如何获得classpath下面的资源
以前我写了一篇blog:Java中获取classpath路径下的资源文件 ,将的事情是我在直接使用ClassLoader的getResourceXXX(),方法获取classpath下资源的时候除了问题,我现在已经忘记我是否是使用了getSystemClassLoader() 获取默认的classloader,总之,在虚拟机启动的时候使用到了几个classloader(ms是3个,有兴趣的朋友可以google一下,很多),为了方便,并确保我们使用到正确的ClassLoader,我们可以这样写:
this.getClass.getResourceAsStream(String name);
他是对this.getClass.getDefaultClassLoader的一个代理。
但是今天要写一个自用小工具,eclipse插件,有趣的问题发生了。下面是我要比较的两行代码:
this.getClass.getResourceAsStream(String name); //1
this.getClass.getDefaultClassLoader.getResourceAsStream(String name); //2
当我写下第一行代码的时候无效,而第二行代码却可以通过。我知道有个问题:
eclipse为了防止冲突,对每个plugin使用不同的类装载器进行加载。但不是说第一行代码的实现是对第二行的一个代理,他怎么可能不行呢?
有趣的问题,不过还好,我的程序可以抱起来了。en 下一个问题吧。