Tag: 类加载器的

Class.getResource()和ClassLoader.getResource()之间有什么区别?

我想知道Class.getResource()和ClassLoader.getResource()之间有什么区别? 编辑:我特别想知道是否有任何caching文件/目录级别涉及。 如“在Class版本中caching的目录列表? 以下AFAIK基本上应该做同样的事情,但他们不是: getClass().getResource() getClass().getClassLoader().getResource() 我在摆弄某些报告生成代码时发现了这个问题,这些代码在WEB-INF/classes/从该目录中的现有文件中创build一个新文件。 当使用Class中的方法时,我可以使用getClass().getResource()查找在部署时存在的文件,但是当试图获取新创build的文件时,我收到一个空对象。 浏览目录清楚地显示新文件在那里。 如“/myFile.txt”中的文件名前加斜杠。 另一方面, getResource()的ClassLoader版本find了生成的文件。 从这个经验看来,目录列表正在进行某种caching。 我是对的吗?如果是的话,这是在哪里logging? 从Class.getResource()的API文档 查找具有给定名称的资源。 用于search与给定类关联的资源的规则由类的定义类加载器来实现。 这个方法委托给这个对象的类加载器。 如果此对象由引导类加载器加载,则该方法委托给ClassLoader.getSystemResource(java.lang.String)。 对我来说,这读取“Class.getResource真的调用自己的类加载器的getResource()”。 这和getClass().getClassLoader().getResource() 。 但显然不是。 有人能给我提供一些关于这个问题的启示吗?