【发布时间】:2012-05-08 13:28:13
【问题描述】:
当使用Class.getResource() 并提供一个相当常见的资源名称(如"license.html")时,Java 可能会从前面在 CLASSPATH 中列出的另一个 JAR 文件中加载"license.html" 资源,但可能与我的应用程序完全无关。有没有办法强制 ClassLoader首先尝试从我的类所在的同一个 JAR 文件中加载资源,只有在没有找到的情况下,才查看 CLASSPATH 上的其他 JAR?
【问题讨论】:
-
'通用资源名称,例如
"license.html"' 给它一个不常见路径的好理由,例如"com/our/app/license.html"。 -
您的资源应该以一种明确的方式命名 - 这意味着如果在另一个
ClassLoader中存在匹配项,则应予以考虑。然后你会getResources()列出所有此类匹配项。 -
+1 给安德鲁;将其视为与包命名相同的方式。
-
如果您需要将文件保留在默认包中,您可以尝试询问该 jar 文件中的类的类加载器。
-
@Juan 是的,我有这门课。无论如何,MyClass.class.getResource() 可能会加载错误的资源。