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

这个问题在很多地方被提出,有很多小的变化. (例如Java – getClassLoader().getResource() driving me bonkers等.)我仍然无法使其发挥作用.
这是一段代码片段:

        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文件位于同一目录中.唉,注释掉的代码只返回url的空值.

大多数其他帖子似乎都处理getResourceAsStream().我想我应该使用getResource().这有什么不同?

这不可能是这么难.有线索吗?

解决方法:

String clipName = "Chook.wav";

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

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

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

上一篇:Shell命令-搜索文件或目录之whereis、locate


下一篇:mysql 模糊查询语句比较(LIKE、instr、locate、find_in_set、position)