关于Class类与Classloader类的getResource方法获取路径的问题!

08-09-01 wq8987
public class GuiCamera{

}

GuiCamera.class.getClassLoader().getResource("img\\demo1.jpg"));

GuiCamera.class.getResource("img\\demo1.jpg"));

这两个获取的路径是不同的,能解释一下么!

    

wq8987
2008-09-01 08:46
我刚在JDK中找到了答案哦!

Class类的getResource方法

GuiCamera.getClass.getResource("/name")

会从GuiCamera类的根目录上去找资源!

而GuiCamera.getClass.getResource("name")

会从GuiCamera的类所在路径里去找资源!即 包名+name!

ClassLoader类的getResource方法

而GuiCamera.getClass.getResource("name")

会从GuiCamera类的根目录上去找资源!

GuiCamera.getClass.getResource("/name")

会从什么地方找起,我还不是很清楚!望补充!

banq
2008-09-01 12:22
理解Java的本质就知道,Java都是由一个个ClassLoader组成的大小叠加容器。

两者差别就是getClassLoader,表示获得当前场景的ClassLoader,而没有getClassLoader,则表示当前class这个对象,和ClassLoader无关。

如果你的类被加载到一个个ClassLoader中,使用getClassLoader比较好些。

freebox
2008-09-01 12:26
这些东西我也一直弄不清楚,一直用经验主义来做基于偶合编程,像刚摆弄hibernate的时候我不知道那个cfg放在哪,于是复制了几份一样内容的分别放在各个目录里,肯定是好用的,再一个个删除试着看,总归找到是哪一个在起作用,于是以后都照着来。

猜你喜欢