当前位置: 首页 > 面试题库 >

我应该如何在Java中使用getResource()?

法弘亮
2023-03-14
问题内容

这个问题在很多地方都被问到,变化不尽。例如Java-getClassLoader()。getResource()不仅使我烦恼不已。)我仍然无法使其正常工作。
这是一个代码片段:

        String clipName = "Chook.wav";
        ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
        // URL url = classLoader.getResource(clipName);
        URL url = new URL("file:///Users/chap/Documents/workspace/the1620/bin/ibm1620/" + clipName);
        ais = AudioSystem.getAudioInputStream(url);

此作品-请注意,我硬编码的路径,包含剪辑文件,该文件的目录 有,而且
在同一目录作为我的.class文件。las,注释掉的代码仅返回url的空值。

其他大多数帖子似乎都涉及getResourceAsStream()。我想我应该使用getResource()。难道 使得不同?

它只是 不能 这么难。有什么线索吗?


问题答案:

String clipName = “Chook.wav”;

使用时getResource,您传入的字符串必须是绝对名称或相对于特定类有效。由于您使用ClassLoader.getResource()而不是Class.getResource(),因此它必须是绝对路径。

在没有看到您实际的文件层次结构的情况下,我只能猜测“ bin”是已编译的类和资源的根,“ ibm1260”是该路径中的软件包/文件夹,并且“
Chook.wav”存在于该文件夹中。如果是这种情况,那么您需要使用/ibm1260/Chook.wav(或者潜在地ibm1260/Chook.wav,我通常不使用类加载器进行资源查找)作为传递给的文件的名称getResource()

无论哪种方式,您都需要确保将文件复制到编译代码的位置,并且根文件夹位于类路径上。



 类似资料:
  • 问题内容: 我不太清楚当我这样说时会做什么: 我可以稍微了解使用它的原因,因为它不浏览整个数据库表以更新字段,而是仅更新新添加的记录。如我错了请纠正我。 所以我想做的是使用这样创建索引: 一旦执行此操作,文档就根本不会上传到索引。我要去哪里错了? 任何帮助,不胜感激。 问题答案: 如果您的表中有一个时间戳列(例如),则最好使用它代替ID号。这样,当记录更新时,您也可以修改该时间戳,输入插件将提取记

  • 问题内容: 在Objective- C中,我调用该方法来记录异常。如何在Swift中调用它? 问题答案: 使用Swift 2,您可以将Swift函数和闭包作为C函数指针传递 原始答案 从Xcode 6 beta 6开始,您不能这样做。 Swift确实支持传递函数指针,但是它们几乎就像不透明指针一样被对待。您既不能定义指向Swift函数的C函数指针,也不能在Swift中调用C函数指针。 这意味着您从

  • 问题内容: 我使用RedisConnection Set方法设置字节数组,但是如何获取数据?get返回包装的字节数组吗? 链接: http://code.google.com/p/booksleeve/ http://code.google.com/p/protobuf-net/ 这可行,但感觉不对: 更多信息: 问题答案: 那是完全正确的。“ Get”(BookSleeve)返回一个deferr

  • 问题内容: 我的gopath是,跟随如下: 现在,我使用,然后变为: 这是: 那么,我应该使用什么命令?为什么没用?我的go版本是1.6.2。 问题答案: 借助Go1.6,您可以在阅读时内置供应商。这是什么意思?只有一件事要牢记: 当使用诸如或的工具时,他们首先检查依赖项是否位于中。如果是这样,请使用它。如果不是,请还原到该目录。 Go 1.6中的实际“查找路径”依次为: 话虽如此,将继续安装到您

  • 我有一个包含一个活动和两个片段的应用程序,在第一个片段中,我应该能够将数据插入数据库,在第二个片段中,我应该能够在一个RecyclerView中看到添加的项目。 所以我已经创建了数据库、我的RecyclerView适配器和ViewModel, 我是否应该在活动中初始化ViewModel,并以某种方式从片段中调用它来使用insert? 我是否应该在两个片段中初始化viewmodel两次? 我的代码如

  • 问题内容: 此时,备份变量仍包含原始值“ hello”(这是由于String的不可变性对吗?)。 但是用这种方法复制字符串是否真的 安全 (复制常规可变对象当然不安全),还是写这个更好呢?: 换句话说,这两个摘要之间有什么区别(如果有)? 编辑-第一个代码段为何安全的原因: 让我基于已经提供的良好答案(主要侧重于两个摘要之间的性能差异问题),对事情进行更详细的说明: 字符串在Java中是不可变的,