有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

我正在使用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,这有关系吗?谢谢

编辑:

试图在主项目文件夹中创建resources文件夹,但仍出现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();

共 (3) 个答案

  1. # 1 楼答案

    最佳做法是创建一个名为resresources的文件夹(取决于您的包结构),您将在其中保存与项目相关的资源,如任何图像或声音文件

    根据您的偏好,可以将此文件夹放入主项目文件夹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"或存储文件的任何位置),则应该生成您要查找的结果

  2. # 2 楼答案

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

    在项目下,创建一个名为resources的目录。在这里放置所有您希望从应用程序中访问的“资源”。这些将作为嵌入式资源与应用程序捆绑在一起

    从应用程序内部使用

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

    或者

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

    假设您将文件放置在resources路径的顶层。如果它们位于子目录中,则需要提供完整路径

    清洁、建造和测试

  3. # 3 楼答案

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