音乐不会在 .jar 文件中播放

时间:2021-05-17 15:47:55

标签: java

我在这里查看了很多有关此问题的主题,但其中任何一个都无法解决我的问题。 我有这个方法

String filepath = "resources/pacmanMusic.wav";
URL musicLocation = getClass().getResource(filepath);
//String musicPath = filepath.toString();

public void playMusic(String musicLocation) {
    if (play) {
        
        try {
            
            AudioInputStream inputStream = AudioSystem.getAudioInputStream(new File(musicLocation));
            File musicPath = new File(musicLocation);
            inputStream = AudioSystem.getAudioInputStream(musicPath);
            clip = AudioSystem.getClip();
            System.out.println(musicLocation);
            clip.open(inputStream);
            clip.loop(Clip.LOOP_CONTINUOUSLY);
            clip.start();
            
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }else {
        clip.stop();
    }
    System.out.println(play);
}

但我不知道,如果音乐在 eclipse 中播放,为什么它不会在 .jar 中播放。从其他“主题”中,我总是收到诸如 file is null 之类的错误。 这就是我如何调用上面的方法 playMusic(filepath); 我做错了什么?谢谢

1 个答案:

答案 0 :(得分:0)

试试这个:

InputStream fileInputStream = YourAwesomeClass.class.getResourceAsStream("yourFile.mp3");
AudioInputStream audioInputStream = AudioSystem.getAudioInputStream(fileInputStream);

据我所知,您的 .mp3 应该保存在资源文件夹中。创建 jar 时,文件路径被转换为“jar 路径”并且没有得到很好的处理。这就是为什么使用 InputStream 是个好主意。