Java 如何在JAR文件中播放音频?

Java 如何在JAR文件中播放音频?,java,audio,audioinputstream,Java,Audio,Audioinputstream,我是java编程新手,当我将java项目导出到一个可运行的JAR文件中时,我试图播放音频,但当它试图以JAR的形式访问音频文件时,我总是遇到一个错误 我尝试了两种不同的方式来播放音频(一种是评论,另一种不是)。它们都在编译器中工作。未注释的一个在JAR文件中给了我错误,而注释的一个甚至不会运行JAR文件 InputStream in; AudioStream as; public void PlayMusic(boolean a) { try { if (a

我是java编程新手,当我将java项目导出到一个可运行的JAR文件中时,我试图播放音频,但当它试图以JAR的形式访问音频文件时,我总是遇到一个错误

我尝试了两种不同的方式来播放音频(一种是评论,另一种不是)。它们都在编译器中工作。未注释的一个在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文件。

尝试:

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

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

感谢您的回复。在我将声音文件移出src文件夹并直接放入project文件夹之前,这在编译器中不起作用。但是,由于某些原因,它仍然不能在JAR文件中工作。