两者有什么区别?
我的资源文件打包在根级包中。在我测试的特定情况下,调用 Class.class.getResource("/rec.txt") 似乎有效。但是,当我尝试在更大的环境 (hadoop) 中将此 jar 用作依赖项时,它不起作用(返回 null )。但是,将“类”更改为代码中的任何特定类可以修复它。有人可以扔一些灯。
最佳答案
发生这种情况的原因是 getResource 的工作方式。它实质上将调用委托(delegate)给 <classname>
的类加载器。正如您在问题中所说的那样。
Class 对象可能由企业应用程序中的引导类加载器加载,而您的类 <classname>
由不同的类加载器加载。
关于Java加载资源Class.class.getResource vs <classname>.class.getResource,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6823597/