Java 程序的资源应该放在哪里?

问题描述 投票:0回答:3

我正在使用 Eclipse 进行 Java 编程。

我最近尝试在我的程序中播放声音文件。我这样做了:

URL url = this.getClass().getResource("ih.wav");
audioIn = AudioSystem.getAudioInputStream(url);
clip = AudioSystem.getClip();
clip.open(audioIn);
clip.start();

只有当我尝试将 ih.wav 放入 bin 文件夹中时,这才起作用,就好像 bin 文件夹是我的项目的“基本文件夹”一样。将文件放在项目的主文件夹中,不起作用。放在src文件夹下,也没用。

有人可以向我解释一下将我的 Java 程序资源放在哪里吗?另外,如果我将资源导入到 Eclipse 中,有什么关系吗?谢谢

编辑:

尝试在主项目文件夹中创建资源文件夹,仍然给我一个 NullPointerException:

        URL url1 = this.getClass().getResource("res/ah.wav");
        audioIn = AudioSystem.getAudioInputStream(url1);
        clip1 = AudioSystem.getClip();
        clip1.open(audioIn);

        URL url2 = this.getClass().getResource("res/eh.wav");
        audioIn = AudioSystem.getAudioInputStream(url2);
        clip2 = AudioSystem.getClip();
        clip2.open(audioIn);

        URL url3 = this.getClass().getResource("res/ih.wav");
        audioIn = AudioSystem.getAudioInputStream(url3);
        clip3 = AudioSystem.getClip();
        clip3.open(audioIn);

        clip1.start();
        clip2.start();
        clip3.start();
java eclipse resources project embedded-resource
3个回答
8
投票

警告:我不使用 Eclipse,我从未使用过 Eclipse,我对 Eclipse 的了解相当于阅读其他帖子并在这里回答问题

在您的项目下,创建一个名为

resources
的目录。在这里放置您想要从应用程序中访问的所有“资源”。这些将作为嵌入式资源与您的应用程序捆绑在一起。

在您的应用程序中使用任一

this.getClass().getResource("/ah.wav")

this.getClass().getResource("/resources/ah.wav")

假设您将文件放置在

resources
路径的顶层。如果它们位于子目录中,您需要提供完整路径...

清理、构建和测试


4
投票

我会在

resources
内创建一个
src
文件夹,类似于
src/main/resources
。您想看看Maven,这是一个项目管理和理解工具,对项目组织有很大帮助。


3
投票

最佳实践是创建一个名为

res
resources
的文件夹(取决于您的包结构),您将在其中保存项目相关资源,例如任何图像或声音文件。

根据喜好,可以将此文件夹放在主项目文件夹中

MyProject/res
或将其放入相关包中,例如
main.java.res

编辑

为了更多地遵循你的问题,我对

getResources()
方法不太熟悉,所以我个人建议使用一些类似于以下的代码:

File file = new File("ih.wav");
audioIn = AudioSystem.getAudioInputStream(file);
clip = AudioSystem.getClip();
clip.open(audioIn);
clip.start();

如果您相应地更改文件的路径(例如 "main/resources/ih.wav" 或存储文件的任何位置),

应该
会产生您正在寻找的结果。

© www.soinside.com 2019 - 2024. All rights reserved.