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

2023-11-21

我想知道两者之间有什么区别Class.getResource() and ClassLoader.getResource()?

编辑:我特别想知道文件/目录级别是否涉及任何缓存。如“目录列表是否缓存在类版本中?”

据我所知,以下内容本质上应该做同样的事情,但事实并非如此:

getClass().getResource() 
getClass().getClassLoader().getResource()

我在摆弄一些在其中创建新文件的报告生成代码时发现了这一点WEB-INF/classes/从该目录中的现有文件。当使用类中的方法时,我可以使用以下命令找到部署时存在的文件getClass().getResource(),但是当尝试获取新创建的文件时,我收到了一个空对象。浏览目录清楚地显示新文件就在那里。文件名前面带有正斜杠,如“/myFile.txt”中所示。

The ClassLoader的版本getResource()另一方面确实找到了生成的文件。从这次经验来看,似乎正在对目录列表进行某种缓存。我说得对吗?如果是的话,这个记录在哪里?

来自API docs on Class.getResource()

找到资源 具有给定的名称。规则为 搜索与某个相关的资源 给定的类由 定义类的类加载器。 该方法委托给该对象的 类加载器。如果这个物体是 由引导类加载器加载, 该方法委托给 ClassLoader.getSystemResource(java.lang.String)。

对我来说,这意味着“Class.getResource 实际上是在调用它自己的类加载器的 getResource()”。这与做的一样getClass().getClassLoader().getResource()。但显然不是。有人可以为我提供一些关于此事的说明吗?


Class.getResource可以采用“相对”资源名称,该名称是相对于类的包进行处理的。或者,您可以使用前导斜杠指定“绝对”资源名称。类加载器资源路径始终被认为是绝对的。

所以下面的内容基本上是等价的:

foo.bar.Baz.class.getResource("xyz.txt");
foo.bar.Baz.class.getClassLoader().getResource("foo/bar/xyz.txt");

这些也是如此(但它们与上面不同):

foo.bar.Baz.class.getResource("/data/xyz.txt");
foo.bar.Baz.class.getClassLoader().getResource("data/xyz.txt");
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Class.getResource() 和 ClassLoader.getResource() 有什么区别? 的相关文章

  • Java Runtime.getRuntime().freeMemory() 问题

    我搜索并看到了一些线程 但没有一个能够解决我遇到的具体问题 我正在尝试使用以下方式监视我的内存使用情况Runtime getRuntime freeMemory Runtime getRuntime maxMemory and Runtim
  • @RestController 没有 @ResponseBody 方法工作不正确

    我有以下控制器 RestController RequestMapping value base url public class MyController RequestMapping value child url method Req
  • 使用 Ant 将非代码资源添加到 jar 文件

    我正在将 java 应用程序打包成 jar 文件 我正在使用 ant 和 eclipse 我实际上需要在 jar 中直接在根文件夹下包含几个单独的非代码文件 xml 和 txt 文件 而不是与代码位于同一位置 我正在尝试使用includes
  • 打印星号的 ASCII 菱形

    我的程序打印出这样的钻石 但只有当参数或菱形的每一面为4 例如如果我输入6 底部三角形的间距是错误的 我一直在试图找出答案 当参数改变时 底部的三角形不会改变 只有顶部的三角形会改变 它只适用于输入4 public static void
  • Spring RestTemplate 使用 cookie 遵循重定向

    最近我遇到了一个问题 我需要做一个GET请求远程服务 我假设使用一个简单的 servlet 并且 RestTemplate 返回Too many redirects 经过一番调查 似乎对指定远程服务发出的第一个请求实际上只是一个 302 重
  • Spring Data JPA 选择不同

    我有一个情况 我需要建立一个select distinct a address from Person a 其中地址是 Person 内的地址实体 类型的查询 我正在使用规范动态构建我的 where 子句并使用findAll Specifi
  • Integer.parseInt("0x1F60A") 以 NumberformatException 结束

    我尝试从数据库中获取长字符串内的表情符号代码 格式如下 0x1F60A 所以我可以访问代码 但它将是String 起初 我尝试通过执行以下操作来转换变量tv setText beforeEmo getEmijoByUnicode int e
  • 当客户端关闭连接时,Spring StreamingResponseBody 请求线程未清理

    我在控制器中有一个端点 它返回一个StreamingResponseBody 用于向客户端发送文件 其代码大致如下 RestController RequestMapping value api public class Controlle
  • Jackson XML ArrayList 输出具有两个包装器元素

    我在 Jackson 生成的 XML 输出中得到了两个包装器元素 我只想拥有一个 我有一个 Java bean Entity Table name CITIES JacksonXmlRootElement localName City pu
  • 如何使用 Hibernate (EntityManager) 或 JPA 调用 Oracle 函数或过程

    我有一个返回 sys refcursor 的 Oracle 函数 当我使用 Hibernate 调用该函数时 出现以下异常 Hibernate call my function org hibernate exception Generic
  • 使用 Guice 优化注册表

    你好 今天思考了一种优化 有一些疑问 语境 我正在使用 Guice 2 进行 Java 开发 在我的网络应用程序中 我有一个转换器注册表 可以即时转换为某种类型 转换器描述如下 public class StringToBoolean im
  • 读取电子邮件的文本文件转换为 Javamail MimeMessage

    我有一个电子邮件原始来源的文本文件 直接从 gmail 复制 如果您单击 查看原始文件 您就会看到它 我想读入该文件并将其转换为 MimeMessage 如果您好奇为什么 我设置了 JavaMaildir 并且需要用电子邮件填充它的收件箱以
  • 在 SWT/JFace RCP 应用程序中填充巨大的表

    您将如何在 SWT 表中显示大量行 巨大是指超过 20K 行 20 列的东西 不要问我为什么需要展示那么多数据 这不是重点 关键是如何让它尽可能快地工作 这样最终用户就不会厌倦等待 每行显示某个对象的实例 列是其属性 一些 我想使用 JFa
  • QuerySyntaxException:无法找到类

    我正在使用 hql 生成 JunctionManagementListDto 类的实际 Java 对象 但我最终在控制台上出现以下异常 org hibernate hql internal ast QuerySyntaxException
  • Spring-ws:如何从没有“Request”元素的 xsd 创建 Wsdl

    尝试为客户端实现 SOAP Web 服务 我需要一个 wsdl 文件来通过soapUI 测试该服务 但正如您在下面看到的 这个 xsd 没有 Request 和 Response 方法 所有请求和响应都被定义为基本 ServiceProvi
  • Hamcrest Matchers - 断言列表类型

    问题 我目前正在尝试使用 Hamcrest Matchers 来断言返回的列表类型是特定类型 例如 假设我的服务调用返回以下列表 List
  • Resteasy 可以查看 JAX-RS 方法的参数类型吗?

    我们使用 Resteasy 3 0 9 作为 JAX RS Web 服务 最近切换到 3 0 19 我们开始看到很多RESTEASY002142 Multiple resource methods match request警告 例如 我们
  • Android:无法发送http post

    我一直在绞尽脑汁试图弄清楚如何在 Android 中发送 post 方法 这就是我的代码的样子 public class HomeActivity extends Activity implements OnClickListener pr
  • 如何重新启动死线程? [复制]

    这个问题在这里已经有答案了 有哪些不同的可能性可以带来死线程回到可运行状态 如果您查看线程生命周期图像 就会发现一旦线程终止 您就无法返回到新位置 So 没有办法将死线程恢复到可运行状态 相反 您应该创建一个新的 Thread 实例
  • org.apache.commons.net.io.CopyStreamException:复制时捕获 IOException

    我正在尝试使用以下方法中的代码将在我的服务器中创建的一些文件复制到 FTP 但奇怪的是我随机地低于错误 我无法弄清楚发生了什么 Exception org apache commons net io CopyStreamException

随机推荐

  • Sprite Kit 和播放声音导致应用程序终止

    使用ARC 只是我遇到的一个问题 我有一个 SKScene 在其中使用 SKAction 类方法播放声音效果 SKAction playSoundFileNamed sound wav waitForCompletion NO 现在 当我尝
  • 在 Rails 3 中设置会话超时

    这看起来很简单 我试图让 Rails Active Record 会话在 2 分钟后超时 因此 两分钟后我希望我的用户必须重新登录 我只是在跑步rails server 即 WebBrick 在我的本地开发机器上 我知道这与以下代码有关co
  • 您可以使用异步函数通过 useState 设置初始状态吗

    我的组件依赖于本地状态 useState 但初始值应该来自http响应 我可以传递一个异步函数来设置初始状态吗 如何从响应中设置初始状态 这是我的代码 const fcads gt let good Axios get admin geta
  • 如何在Java中实现行级安全性?

    我目前正在评估身份验证 授权框架 Apache Shiro 看起来很好 但我是缺少行级安全性特征 例如 数据库中可能存在特殊行 这些行只能由具有特殊权限的用户可见和访问 为了避免不必要的往返 我们当前修改 SQL 查询以与我们的授权数据连接
  • 我可以更改 PyCharmProjects 的位置/名称吗?

    我在 Ubuntu 12 04 上使用 PyCharm 3 0 它自动创建了一个名为的文件夹 PyCharmProjects用于存储项目文件夹 是否有可能 更改此文件夹的位置 更改此文件夹的名称 我在界面 JetBrains 网站或设置文件
  • mPDF - 基于元素高度的分页符

    我在用着mpdf在 Laravel 和这个包4 0版本 问题是我有一个不同高度的问题列表 其中有 4 个选项 而且我不知道每个 div 标签的确切高度和近似高度 其中有哪些问题和答案选项 我不想要我的某些部分转到另一个页面的问题 我的问题的
  • html5shiv 无法在 IE8 中运行?

    我无法在 IE8 中使用 HTML5 元素获取样式 我已经搜索过 stackoverflow 和 Google 没有任何建议我尝试过工作 我从一个更复杂的页面开始 我正在将 XHTML 框架转换为 HTML5 并且没有丝毫担心 但是在模拟和
  • 在(c#)库中使用 List 与 LinkedList 的性能差异是什么[重复]

    这个问题在这里已经有答案了 可能的重复 什么时候应该使用 List 和 LinkedList 这个问题与我之前合并的问题有关 与列表与链表 如果我不希望对我的数据结构使用按索引访问 那么通过使用 LinkedList 而不是 List 可以
  • C++ 程序因 std::bad_alloc 而终止,但 valgrind 报告没有内存泄漏

    我的程序失败并显示 std bad alloc 错误消息 该程序是可扩展的 因此我使用 valgrind 在较小的版本上进行了测试 并且没有内存泄漏 这是统计力学的应用 所以我基本上制作了数百个对象 更改它们的内部数据 在本例中为双精度的
  • 应用程序池启动模式:OnDemand 与 AlwaysRunning,哪个最好?

    我的应用程序池一直使用 OnDemand 启动模式 但最近我听说 AlwaysRunning 模式 它允许部署到 IIS 的 ASP NET 应用程序在部署后立即可用 启用此功能似乎会导致 IIS 在应用程序部署后立即启动该应用程序 从而消
  • python:绑定如何工作

    我想了解 python 中的变量绑定到底是如何工作的 让我们看看这个 def foo x def bar print y return bar y 5 bar foo 2 bar 这打印 5 对我来说似乎是合理的 def foo x def
  • 从 url 安装 apk

    我正在尝试从 URL 安装 APK 这是我的代码 Intent promptInstall new Intent android content Intent ACTION VIEW promptInstall setFlags Inten
  • 通过命令行删除 PDF 注释

    有没有办法批量删除所有 PDF 注释 包括突出显示 注释 注释 箭头 例如 通过命令行 下列系列命令解决了我的问题 pdftk in pdf output uncompress sed Annots d pdftk output out p
  • 如何避免指针运算中的乘法?

    如果我写 int main int argc char argv int temp 50 3 return temp argc temp 0 并用 Visual C 编译它 我得到 009360D0 55 push ebp 009360D1
  • 用于验证 URL 的 JavaScript 正则表达式

    我正在使用以下正则表达式验证 URL 我想验证谷歌网站但它返回 false 可以在下面的 R E 中更改哪些内容来验证谷歌网站 console log learnRegExp http www google com 123 false co
  • 如何在gin中对路线进行分组?

    我想将我的路线分组在不同的文件中 这样主文件就不会很混乱 我想在他们自己的文件中添加类似的内容 v1 router Group v1 v1 Group users usersRoutes v1 Group pictures pictures
  • 如何禁用除最顶层视图之外的所有视图的触摸输入?

    我有一个包含多个子视图的视图 当用户点击子视图时 子视图的大小会扩大以覆盖大部分屏幕 但其他一些子视图在下面仍然可见 当子视图之一像这样 展开 时 我希望我的应用程序忽略对其他子视图的触摸 有没有一种简单的方法可以实现这一目标 我可以编写代
  • 如何从 Flutter 中的通知导航到应用程序中的特定 MaterialPageRoute

    是否可以通过通知单击导航到应用程序中的特定 MaterialPageRoute 我在主屏幕中配置了通知 void configureNotifications final FirebaseMessaging firebaseMessagin
  • 如何访问派生类中的受保护成员?

    From http www parashift com c faq lite basics of inheritance html faq 19 5 在类的受保护部分中声明的成员 数据成员或成员函数 只能由该类的成员函数和友元以及派生类的成
  • Class.getResource() 和 ClassLoader.getResource() 有什么区别?

    我想知道两者之间有什么区别Class getResource and ClassLoader getResource 编辑 我特别想知道文件 目录级别是否涉及任何缓存 如 目录列表是否缓存在类版本中 据我所知 以下内容本质上应该做同样的事情