关于Class类与Classloader类的getResource方法获取路径的问题!
public class GuiCamera{
}
GuiCamera.class.getClassLoader().getResource("img\\demo1.jpg"));
GuiCamera.class.getResource("img\\demo1.jpg"));
这两个获取的路径是不同的,能解释一下么!
public class GuiCamera{
}
GuiCamera.class.getClassLoader().getResource("img\\demo1.jpg"));
GuiCamera.class.getResource("img\\demo1.jpg"));
这两个获取的路径是不同的,能解释一下么!
我刚在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")
会从什么地方找起,我还不是很清楚!望补充!
理解Java的本质就知道,Java都是由一个个ClassLoader组成的大小叠加容器。
两者差别就是getClassLoader,表示获得当前场景的ClassLoader,而没有getClassLoader,则表示当前class这个对象,和ClassLoader无关。
如果你的类被加载到一个个ClassLoader中,使用getClassLoader比较好些。
这些东西我也一直弄不清楚,一直用经验主义来做基于偶合编程,像刚摆弄hibernate的时候我不知道那个cfg放在哪,于是复制了几份一样内容的分别放在各个目录里,肯定是好用的,再一个个删除试着看,总归找到是哪一个在起作用,于是以后都照着来。