我在这里查看了很多有关此问题的主题,但其中任何一个都无法解决我的问题。 我有这个方法
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);
我做错了什么?谢谢
答案 0 :(得分:0)
试试这个:
InputStream fileInputStream = YourAwesomeClass.class.getResourceAsStream("yourFile.mp3");
AudioInputStream audioInputStream = AudioSystem.getAudioInputStream(fileInputStream);
据我所知,您的 .mp3
应该保存在资源文件夹中。创建 jar 时,文件路径被转换为“jar 路径”并且没有得到很好的处理。这就是为什么使用 InputStream
是个好主意。