这个.getClass().getResource()方法会在哪里查找?

4

假设我在某个类中调用this.getClass().getResource()方法以获取文件的URL。

getResource()方法从哪里开始查找?从项目的主src文件夹开始查找吗?从主包文件夹开始查找吗?getResource()方法的'根文件夹'是什么?

我一直对这个方法感到困惑,如果有人能解释一下就太好了。


这有帮助吗?https://dev59.com/IGIk5IYBdhLWcg3wG67b - Engineer2021
1
你应该仔细查看方法文档,以及所有其他处理相同主题的SO问题。 - Seelenvirtuose
提醒:最终用户仅拥有一堆JAR,这些JAR构成了应用程序的类路径。他没有任何项目,也没有任何'src'目录。请不要混淆您的开发环境和运行时环境。 - JB Nizet
1个回答

1

Class.getResource()可以查找指定名称的资源。与给定类相关联的搜索资源的规则由该类的定义类加载器实现。

在委派之前,使用以下算法从给定的资源名称构造绝对资源名称:

如果名称以'/' ('\u002f')开头,则资源的绝对名称是跟在'/'后面的部分。 否则,绝对名称的形式如下:

modified_package_name/name

modified_package_name 是此对象的包名称,其中 '.' ('\u002e')已替换为 '/'

ClassLoader 类使用委派模型搜索类和资源。每个 ClassLoader 实例都有一个关联的父类加载器。在请求查找类或资源时,ClassLoader 实例会在尝试查找类或资源本身之前将类或资源的搜索委托给其父类加载器。虚拟机内置的类加载器称为“引导类加载器”,它本身没有父级,但可以作为 ClassLoader 实例的父级。

读得越多, 学到的就越多 :)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,