audioInputStream的url似乎为空

时间:2015-02-11 15:26:10

标签: java file audio

我正在尝试以下代码来播放mp3。该文件位于正确的文件夹中。打开文件时抛出异常。

任何想法都可能出错?

当尝试在第三行打印url时,它会给我一个空指针异常。

我正在使用1.8到1.5分钟的compat版本进行编译。这可能是相关的吗?

    AudioInputStream audioIn = null;
    URL url = this.getClass().getResource("./data/1.wav");
    System.out.print(url.getFile());

    try {
        audioIn = AudioSystem.getAudioInputStream(url);
        //audioInputStream = AudioSystem.getAudioInputStream(this.getClass().getResource(soundFile));

    }
    catch(Exception ex) {System.out.print("exception opening file");}
    try{
        Clip clip = AudioSystem.getClip();
        clip.open(audioIn);
        clip.start();
    }
    catch(Exception ex)
    {

        System.out.print("exception mediaplayer");
    }
    }

3 个答案:

答案 0 :(得分:0)

您可以使用Clip对象,而不是使用String var。使用Clip,它对我有用。

答案 1 :(得分:0)

哦,我必须将数据文件夹放在src目录中。

但仍然存在一个问题:当我编译为jar文件时,它找不到数据文件夹。我希望用户能够在其中放置不同的东西。

答案 2 :(得分:0)

与文件地址不同,URL可以看到Jar。因此,您可以使用URL来获取文件。

两个可能的问题:

(1)如果文件是.mp3并且你试图加载.wav,那么当然会出现不匹配的情况,如1.mp3<> 1.wav。

(2)将数据放入src文件夹是不够的。它也必须位于包含您引用的“this”的文件夹的子文件夹中。例如,如果您的代码位于包“foo”中,则放置文件的位置为src / foo / data / 1.wav。

你有一个库来解码.mp3吗?如果是这样,像JavaZoom这样的东西应该可以工作。