-1

我是 java 编程的新手,当我将 java 项目导出到可运行的 JAR 文件时,我试图播放音频,但是当它尝试将音频文件作为 JAR 访问时,我一直收到错误消息。

我尝试了 2 种不同的方式来播放音频(一种被评论,另一种没有)。它们都在编译器中工作。未注释的给我 JAR 文件中的错误,而注释的甚至不会运行 JAR 文件!

InputStream in;
AudioStream as;

public void PlayMusic(boolean a)
{
    try 
    {
        if (a == false)
        {
            AudioInputStream audioInputStream = AudioSystem.getAudioInputStream(this.getClass().getResourceAsStream("./lose.wav"));
            Clip clip = AudioSystem.getClip();
            clip.open(audioInputStream);
            clip.start();
            /*in = getClass().getResourceAsStream("/connectfour/lose.wav");
            as = new AudioStream (in);
            AudioPlayer.player.start(as);*/
        }
        else
        {
            AudioInputStream audioInputStream = AudioSystem.getAudioInputStream(this.getClass().getResourceAsStream("./win.wav"));
            Clip clip = AudioSystem.getClip();
            clip.open(audioInputStream);
            clip.start();
            /*in = getClass().getResourceAsStream("/connectfour/win.wav");
            as = new AudioStream (in);
            AudioPlayer.player.start(as);*/
        }


    }
    catch (Exception e)
    {
        JOptionPane.showMessageDialog(null, "Error");
    }
}

我想我可能会错误地访问文件,考虑到它在编译器中的工作方式非常好,但在 JAR 中却没有。

编辑:解决。我发现了使用 url,因为它们可以处理 jar 文件。

4

1 回答 1

0

尝试:

 AudioInputStream audioInputStream = AudioSystem.getAudioInputStream(new File("./lose.wav"));
 Clip clip = AudioSystem.getClip();
 clip.open(audioInputStream);
 clip.start();

其中“./lose.wav”是音频文件相对于 JAR 文件的位置(而不是相对于主类或 src 文件夹)。

于 2019-08-05T17:35:36.103 回答